Soe error handling

This commit is contained in:
Timothy Baldridge 2023-10-20 23:04:47 +01:00
parent 798b07c715
commit 25dd5a0474

View File

@ -52,21 +52,8 @@ public class Proxy : ControllerBase
public async Task<IActionResult> ProxyHead(CancellationToken token, [FromQuery] Uri uri, [FromQuery] string? name, public async Task<IActionResult> ProxyHead(CancellationToken token, [FromQuery] Uri uri, [FromQuery] string? name,
[FromQuery] string? hash) [FromQuery] string? hash)
{ {
var shouldMatch = hash != null ? Hash.FromHex(hash) : default;
_logger.LogInformation("Got proxy head request for {Uri}", uri);
var state = _dispatcher.Parse(uri);
var cacheName = (await Encoding.UTF8.GetBytes(uri.ToString()).Hash()).ToHex(); var cacheName = (await Encoding.UTF8.GetBytes(uri.ToString()).Hash()).ToHex();
var cacheFile = _appSettings.ProxyPath.Combine(cacheName); return new RedirectResult(_redirectUrl + cacheName);
if (!cacheFile.FileExists())
return NotFound();
if (shouldMatch != default)
if (await _hashCache.FileHashCachedAsync(cacheFile, token) != shouldMatch)
return NotFound();
return Ok();
} }
[HttpGet] [HttpGet]
@ -164,11 +151,20 @@ public class Proxy : ControllerBase
private async Task<CacheStatus?> GetCacheEntry(string name) private async Task<CacheStatus?> GetCacheEntry(string name)
{ {
var info = await _s3.GetObjectMetadataAsync(new GetObjectMetadataRequest() GetObjectMetadataResponse info;
try
{ {
BucketName = _bucket, info = await _s3.GetObjectMetadataAsync(new GetObjectMetadataRequest()
Key = name {
}); BucketName = _bucket,
Key = name,
});
}
catch (Exception _)
{
return null;
}
if (info.HttpStatusCode == System.Net.HttpStatusCode.NotFound) if (info.HttpStatusCode == System.Net.HttpStatusCode.NotFound)
return null; return null;