Compare commits
3 Commits
9d46d6495e
...
3e20e41565
Author | SHA1 | Date | |
---|---|---|---|
3e20e41565 | |||
d3958fc22c | |||
159e1ad65d |
@ -1,6 +1,5 @@
|
||||
using Humanizer;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
using OliverBooth.Data.Blog;
|
||||
using OliverBooth.Services;
|
||||
|
||||
@ -17,24 +16,19 @@ public sealed class BlogApiController : ControllerBase
|
||||
_blogService = blogService;
|
||||
}
|
||||
|
||||
[Route("count")]
|
||||
[HttpGet("count")]
|
||||
public IActionResult Count()
|
||||
{
|
||||
return new JsonResult(new { count = _blogService.AllPosts.Count });
|
||||
if (!ValidateReferer()) return NotFound();
|
||||
return Ok(new { count = _blogService.AllPosts.Count });
|
||||
}
|
||||
|
||||
[Route("all/{skip:int?}/{take:int?}")]
|
||||
[HttpGet("all/{skip:int?}/{take:int?}")]
|
||||
public IActionResult GetAllBlogPosts(int skip = 0, int take = -1)
|
||||
{
|
||||
if (!ValidateReferer()) return NotFound();
|
||||
if (take == -1) take = _blogService.AllPosts.Count;
|
||||
|
||||
var referer = Request.Headers["Referer"].ToString();
|
||||
if (!referer.StartsWith(Url.PageLink("/Blog/Index")!))
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
return new JsonResult(_blogService.AllPosts.Skip(skip).Take(take).Select(post => new
|
||||
return Ok(_blogService.AllPosts.Skip(skip).Take(take).Select(post => new
|
||||
{
|
||||
id = post.Id,
|
||||
commentsEnabled = post.EnableComments,
|
||||
@ -44,7 +38,7 @@ public sealed class BlogApiController : ControllerBase
|
||||
published = post.Published.ToUnixTimeSeconds(),
|
||||
formattedDate = post.Published.ToString("dddd, d MMMM yyyy HH:mm"),
|
||||
updated = post.Updated?.ToUnixTimeSeconds(),
|
||||
humanizedTimestamp = post.Updated?.Humanize() ?? post.Published.Humanize(),
|
||||
humanizedTimestamp = post.Updated?.Humanize() ?? post.Published.Humanize(),
|
||||
excerpt = _blogService.GetExcerpt(post, out bool trimmed),
|
||||
trimmed,
|
||||
url = Url.Page("/Blog/Article",
|
||||
@ -58,15 +52,22 @@ public sealed class BlogApiController : ControllerBase
|
||||
}));
|
||||
}
|
||||
|
||||
[Route("author/{id:int}")]
|
||||
[HttpGet("author/{id:int}")]
|
||||
public IActionResult GetAuthor(int id)
|
||||
{
|
||||
if (!ValidateReferer()) return NotFound();
|
||||
if (!_blogService.TryGetAuthor(id, out Author? author)) return NotFound();
|
||||
|
||||
return new JsonResult(new
|
||||
return Ok(new
|
||||
{
|
||||
name = author.Name,
|
||||
avatarHash = author.AvatarHash,
|
||||
});
|
||||
}
|
||||
|
||||
private bool ValidateReferer()
|
||||
{
|
||||
var referer = Request.Headers["Referer"].ToString();
|
||||
return referer.StartsWith(Url.PageLink("/Blog/Index")!);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user