handle exception in sharedInbox

This commit is contained in:
Nicolas Constant 2022-02-09 01:54:35 -05:00
parent d0dd317723
commit 7007b6309a
No known key found for this signature in database
GPG key ID: 1E9F677FB01A5688
4 changed files with 23 additions and 19 deletions

View file

@ -46,7 +46,7 @@ namespace BirdsiteLive.Domain
var result = await httpClient.GetAsync(objectId); var result = await httpClient.GetAsync(objectId);
if (result.StatusCode == HttpStatusCode.Gone) if (result.StatusCode == HttpStatusCode.Gone)
throw new UserIsGoneException(); throw new FollowerIsGoneException();
result.EnsureSuccessStatusCode(); result.EnsureSuccessStatusCode();

View file

@ -2,7 +2,7 @@
namespace BirdsiteLive.Domain namespace BirdsiteLive.Domain
{ {
public class UserIsGoneException : Exception public class FollowerIsGoneException : Exception
{ {
} }
} }

View file

@ -31,28 +31,32 @@ namespace BirdsiteLive.Controllers
[HttpPost] [HttpPost]
public async Task<IActionResult> Inbox() public async Task<IActionResult> Inbox()
{ {
var r = Request; try
using (var reader = new StreamReader(Request.Body))
{ {
var body = await reader.ReadToEndAsync(); var r = Request;
using (var reader = new StreamReader(Request.Body))
_logger.LogTrace("Inbox: {Body}", body);
//System.IO.File.WriteAllText($@"C:\apdebug\inbox\{Guid.NewGuid()}.json", body);
var activity = ApDeserializer.ProcessActivity(body);
var signature = r.Headers["Signature"].First();
switch (activity?.type)
{ {
case "Delete": var body = await reader.ReadToEndAsync();
_logger.LogTrace("Inbox: {Body}", body);
//System.IO.File.WriteAllText($@"C:\apdebug\inbox\{Guid.NewGuid()}.json", body);
var activity = ApDeserializer.ProcessActivity(body);
var signature = r.Headers["Signature"].First();
switch (activity?.type)
{ {
var succeeded = await _userService.DeleteRequestedAsync(signature, r.Method, r.Path, case "Delete":
r.QueryString.ToString(), HeaderHandler.RequestHeaders(r.Headers), activity as ActivityDelete, body); {
if (succeeded) return Accepted(); var succeeded = await _userService.DeleteRequestedAsync(signature, r.Method, r.Path,
else return Unauthorized(); r.QueryString.ToString(), HeaderHandler.RequestHeaders(r.Headers), activity as ActivityDelete, body);
if (succeeded) return Accepted();
else return Unauthorized();
}
} }
} }
} }
catch (FollowerIsGoneException) { } //TODO: check if user in DB
return Accepted(); return Accepted();
} }

View file

@ -214,7 +214,7 @@ namespace BirdsiteLive.Controllers
} }
} }
} }
catch (UserIsGoneException) catch (FollowerIsGoneException) //TODO: check if user in DB
{ {
return Accepted(); return Accepted();
} }