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(); } }
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(); } }
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())); }
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(); })); }
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."); } }