Don't throw if file dates cannot be modified when downloading media

Fixes #585
pull/607/head
Tyrrrz 3 years ago
parent cbe4bc593c
commit bd40dbde48

@ -45,7 +45,7 @@ namespace DiscordChatExporter.Core.Exporting
Directory.CreateDirectory(_workingDirPath); Directory.CreateDirectory(_workingDirPath);
// This catches IOExceptions which is dangerous as we're working also with files // This retries on IOExceptions which is dangerous as we're also working with files
await Http.ExceptionPolicy.ExecuteAsync(async () => await Http.ExceptionPolicy.ExecuteAsync(async () =>
{ {
// Download the file // Download the file
@ -56,17 +56,27 @@ namespace DiscordChatExporter.Core.Exporting
} }
// Try to set the file date according to the last-modified header // Try to set the file date according to the last-modified header
var lastModified = response.Content.Headers.TryGetValue("Last-Modified")?.Pipe(s => try
DateTimeOffset.TryParse(s, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date) {
? date var lastModified = response.Content.Headers.TryGetValue("Last-Modified")?.Pipe(s =>
: (DateTimeOffset?) null DateTimeOffset.TryParse(s, CultureInfo.InvariantCulture, DateTimeStyles.None, out var date)
); ? date
: (DateTimeOffset?) null
if (lastModified is not null) );
if (lastModified is not null)
{
File.SetCreationTimeUtc(filePath, lastModified.Value.UtcDateTime);
File.SetLastWriteTimeUtc(filePath, lastModified.Value.UtcDateTime);
File.SetLastAccessTimeUtc(filePath, lastModified.Value.UtcDateTime);
}
}
catch
{ {
File.SetCreationTimeUtc(filePath, lastModified.Value.UtcDateTime); // This can apparently fail for some reason.
File.SetLastWriteTimeUtc(filePath, lastModified.Value.UtcDateTime); // https://github.com/Tyrrrz/DiscordChatExporter/issues/585
File.SetLastAccessTimeUtc(filePath, lastModified.Value.UtcDateTime); // Updating file dates is not a critical task, so we'll just
// ignore exceptions thrown here.
} }
}); });

Loading…
Cancel
Save