diff --git a/src/Foundatio.AWS/Storage/S3FileStorage.cs b/src/Foundatio.AWS/Storage/S3FileStorage.cs index f4b59ba..49f49e4 100644 --- a/src/Foundatio.AWS/Storage/S3FileStorage.cs +++ b/src/Foundatio.AWS/Storage/S3FileStorage.cs @@ -12,6 +12,7 @@ using Amazon.S3.Model; using Amazon.S3.Util; using Foundatio.AWS.Extensions; +using Foundatio.AWS.Storage; using Foundatio.Extensions; using Foundatio.Serializer; using Microsoft.Extensions.Logging; @@ -137,10 +138,12 @@ public async Task GetFileInfoAsync(string path) try { var response = await _client.GetObjectMetadataAsync(req).AnyContext(); + if (response.HttpStatusCode == System.Net.HttpStatusCode.NotFound) + return null; if (!response.HttpStatusCode.IsSuccessful()) { _logger.LogDebug("[{HttpStatusCode}] Unable to get file info for {Path}", response.HttpStatusCode, req.Key); - return null; + throw new Exception($"Invalid status code {res.HttpStatusCode} ({(int)res.HttpStatusCode}): Expected 200 OK or 404 NotFound"); } return new FileSpec diff --git a/src/Foundatio.AWS/Storage/S3FileStorageException.cs b/src/Foundatio.AWS/Storage/S3FileStorageException.cs new file mode 100644 index 0000000..473f212 --- /dev/null +++ b/src/Foundatio.AWS/Storage/S3FileStorageException.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Foundatio.AWS.Storage { + public class S3FileStorageException : Exception { + public S3FileStorageException() : base() { + } + + public S3FileStorageException(string message) : base(message) { + } + + public S3FileStorageException(string message, Exception innerException) : base(message, innerException) { + } + } +}