Ejemplo n.º 1
0
    public override async Task ExecuteResultAsync(ActionContext context)
    {
        context.HttpContext.Response.Headers.Add(HeaderNames.Vary, HeaderNames.ContentEncoding);
        var stream = File.OpenRead(FileName);

        try
        {
            if (context.HttpContext.Request.Headers.TryGetValue(HeaderNames.AcceptEncoding, out var acceptEncoding) &&
                acceptEncoding.ToString().Contains("gzip"))
            {
                var gzipStream = new GZipStream(context.HttpContext.Response.Body, CompressionLevel.Fastest);

                try
                {
                    context.HttpContext.Response.Headers[HeaderNames.ContentEncoding] = "gzip";
                    await stream.CopyToAsync(gzipStream);
                }
                finally
                {
                    await gzipStream.DisposeAsync();
                }
            }
            else
            {
                await stream.CopyToAsync(context.HttpContext.Response.Body);
            }
        }
        finally
        {
            await stream.DisposeAsync();
        }
    }
Ejemplo n.º 2
0
        protected override async Task SerializeToStreamAsync(Stream stream, TransportContext?context)
        {
            var gzipStream = new GZipStream(stream, CompressionLevel.Optimal, leaveOpen: true);

            try
            {
                await _content.CopyToAsync(gzipStream).ConfigureAwait(false);
            }
            finally
            {
                await gzipStream.DisposeAsync();
            }
        }
Ejemplo n.º 3
0
        public static async Task SendModListDefinition(ModList modList)
        {
            var client = await GetClient();

            if (BuildServerStatus.IsBuildServerDown)
            {
                return;
            }
            var data = Encoding.UTF8.GetBytes(modList.ToJson());

            await using var fs   = new MemoryStream();
            await using var gzip = new GZipStream(fs, CompressionLevel.Optimal, true);
            await gzip.WriteAsync(data);

            await gzip.DisposeAsync();

            client.Headers.Add((Consts.CompressedBodyHeader, "gzip"));
            await client.PostAsync($"{Consts.WabbajackBuildServerUri}list_definitions/ingest", new ByteArrayContent(fs.ToArray()));
        }
Ejemplo n.º 4
0
        public IAsyncDisposable InitializeAsync(DatabaseSmugglerOptionsServerSide options, SmugglerResult result, long buildVersion)
        {
            _gzipStream = new GZipStream(_stream, CompressionMode.Compress, leaveOpen: true);
            _writer     = new AsyncBlittableJsonTextWriter(_context, _gzipStream);
            _options    = options;

            SetupMetadataFilterMethod(_context);

            _writer.WriteStartObject();

            _writer.WritePropertyName("BuildVersion");
            _writer.WriteInteger(buildVersion);

            return(new AsyncDisposableAction(async() =>
            {
                _writer.WriteEndObject();
                await _writer.DisposeAsync();
                await _gzipStream.DisposeAsync();
            }));
        }
Ejemplo n.º 5
0
        public async ValueTask DisposeAsync()
        {
            await _level1.DisposeAsync();

            await _tar.DisposeAsync();
        }
        private async Task RunAsync(CancellationToken stoppingToken)
        {
            try
            {
                using var httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Add("User-Agent", "BikeDataProject");
                var clientFactory = new ClientsFactory(null, httpClient, _configuration["OSM_API"]);

                // get client credentials.
                var userName = await File.ReadAllTextAsync(_configuration["OSM_USER_ID"]);

                var userPass = await File.ReadAllTextAsync(_configuration["OSM_USER_PASS"]);

                var client = clientFactory.CreateBasicAuthClient(userName, userPass);

                // get unsynced track.
                var unSyncedTrack = await _db.GetUnSyncedPublicTrack();

                if (unSyncedTrack == null)
                {
                    return;
                }

                // sync gpx track.
                try
                {
                    var track = await client.GetTraceData(unSyncedTrack.OsmTrackId);

                    using (var memoryStream = new MemoryStream())
                        using (var gzipStream = new GZipStream(memoryStream, CompressionLevel.Optimal))
                        {
                            await track.Stream.CopyToAsync(gzipStream);

                            await gzipStream.FlushAsync();

                            await gzipStream.DisposeAsync();

                            unSyncedTrack.GpxFile = memoryStream.ToArray();
                        }
                    unSyncedTrack.GpxContentType = track.ContentType.MediaType;
                    unSyncedTrack.SyncState      = TrackSyncStateEnum.GpxSynced;

                    _db.Tracks.Update(unSyncedTrack);
                    await _db.SaveChangesAsync();

                    _logger.LogInformation($"Synchronized GPX for public track: {unSyncedTrack.OsmTrackId}");
                }
                catch (Exception e)
                {
                    unSyncedTrack.SyncState = TrackSyncStateEnum.Error;
                    _db.Tracks.Update(unSyncedTrack);
                    await _db.SaveChangesAsync();

                    _logger.LogWarning(e, $"Failed to get public track: {unSyncedTrack.OsmTrackId}");
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, $"Unhandled exception while synchronizing GPX track.");
            }
        }