make endpoints more resilient to missing accept header

This commit is contained in:
Nicolas Constant 2021-01-11 01:08:23 -05:00
parent 4b9f734687
commit 5454d176dd
No known key found for this signature in database
GPG key ID: 1E9F677FB01A5688

View file

@ -39,8 +39,12 @@ namespace BirdsiteLive.Controllers
[Route("/users")] [Route("/users")]
public IActionResult Index() public IActionResult Index()
{ {
var r = Request.Headers["Accept"].First(); var acceptHeaders = Request.Headers["Accept"];
if (acceptHeaders.Any())
{
var r = acceptHeaders.First();
if (r.Contains("application/activity+json")) return NotFound(); if (r.Contains("application/activity+json")) return NotFound();
}
return View("UserNotFound"); return View("UserNotFound");
} }
@ -51,7 +55,10 @@ namespace BirdsiteLive.Controllers
id = id.Trim(new[] { ' ', '@' }).ToLowerInvariant(); id = id.Trim(new[] { ' ', '@' }).ToLowerInvariant();
var user = _twitterService.GetUser(id); var user = _twitterService.GetUser(id);
var r = Request.Headers["Accept"].First(); var acceptHeaders = Request.Headers["Accept"];
if (acceptHeaders.Any())
{
var r = acceptHeaders.First();
if (r.Contains("application/activity+json")) if (r.Contains("application/activity+json"))
{ {
if (user == null) return NotFound(); if (user == null) return NotFound();
@ -59,6 +66,7 @@ namespace BirdsiteLive.Controllers
var jsonApUser = JsonConvert.SerializeObject(apUser); var jsonApUser = JsonConvert.SerializeObject(apUser);
return Content(jsonApUser, "application/activity+json; charset=utf-8"); return Content(jsonApUser, "application/activity+json; charset=utf-8");
} }
}
if (user == null) return View("UserNotFound"); if (user == null) return View("UserNotFound");
@ -79,7 +87,10 @@ namespace BirdsiteLive.Controllers
[Route("/users/{id}/statuses/{statusId}")] [Route("/users/{id}/statuses/{statusId}")]
public IActionResult Tweet(string id, string statusId) public IActionResult Tweet(string id, string statusId)
{ {
var r = Request.Headers["Accept"].First(); var acceptHeaders = Request.Headers["Accept"];
if (acceptHeaders.Any())
{
var r = acceptHeaders.First();
if (r.Contains("application/activity+json")) if (r.Contains("application/activity+json"))
{ {
if (!long.TryParse(statusId, out var parsedStatusId)) if (!long.TryParse(statusId, out var parsedStatusId))
@ -96,6 +107,7 @@ namespace BirdsiteLive.Controllers
var jsonApUser = JsonConvert.SerializeObject(status); var jsonApUser = JsonConvert.SerializeObject(status);
return Content(jsonApUser, "application/activity+json; charset=utf-8"); return Content(jsonApUser, "application/activity+json; charset=utf-8");
} }
}
return View("Tweet", statusId); return View("Tweet", statusId);
} }