Set last write time on downloaded media to the value provided in the Last-Modified header (#459)

This commit is contained in:
Andrew Kolos
2020-12-17 10:13:47 -05:00
committed by GitHub
parent 0e67dcbf2e
commit 69acb5bf76

View File

@@ -1,4 +1,7 @@
using System.IO;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
@@ -8,11 +11,17 @@ namespace DiscordChatExporter.Domain.Internal.Extensions
{
public static async ValueTask DownloadAsync(this HttpClient httpClient, string uri, string outputFilePath)
{
await using var input = await httpClient.GetStreamAsync(uri);
using var response = await httpClient.GetAsync(uri);
var output = File.Create(outputFilePath);
await input.CopyToAsync(output);
await output.DisposeAsync();
await response.Content.CopyToAsync(output);
IEnumerable<string> lastModifiedHeaderValues;
if (response.Content.Headers.TryGetValues("Last-Modified", out lastModifiedHeaderValues))
{
await output.DisposeAsync();
File.SetLastWriteTime(outputFilePath, DateTime.Parse(lastModifiedHeaderValues.First()));
}
}
}
}