2024-02-26 02:50:48 +00:00
|
|
|
using System.Text;
|
2024-02-26 17:44:22 +00:00
|
|
|
using System.Text.Json;
|
2024-02-26 02:50:48 +00:00
|
|
|
using System.Text.Json.Serialization;
|
|
|
|
using Asp.Versioning;
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
using OliverBooth.Data.Blog;
|
|
|
|
using OliverBooth.Data.Web;
|
|
|
|
using OliverBooth.Services;
|
|
|
|
|
|
|
|
namespace OliverBooth.Controllers.Api.v1;
|
|
|
|
|
|
|
|
[ApiController]
|
|
|
|
[Route("api/v{version:apiVersion}/post")]
|
|
|
|
[ApiVersion(1)]
|
|
|
|
[Produces("application/json")]
|
|
|
|
public sealed class BlogPostController : ControllerBase
|
|
|
|
{
|
|
|
|
private readonly ILogger<BlogPostController> _logger;
|
|
|
|
private readonly ISessionService _sessionService;
|
|
|
|
private readonly IBlogPostService _blogPostService;
|
|
|
|
|
|
|
|
public BlogPostController(ILogger<BlogPostController> logger,
|
|
|
|
ISessionService sessionService,
|
|
|
|
IBlogPostService blogPostService)
|
|
|
|
{
|
|
|
|
_logger = logger;
|
|
|
|
_sessionService = sessionService;
|
|
|
|
_blogPostService = blogPostService;
|
|
|
|
}
|
|
|
|
|
|
|
|
[HttpPatch("{id:guid}")]
|
|
|
|
public async Task<IActionResult> OnPatch([FromRoute] Guid id)
|
|
|
|
{
|
|
|
|
if (!_sessionService.TryGetCurrentUser(Request, Response, out IUser? user))
|
|
|
|
{
|
|
|
|
Response.StatusCode = 401;
|
|
|
|
return new JsonResult(new { status = 401, message = "Unauthorized" });
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!_blogPostService.TryGetPost(id, out IBlogPost? post))
|
|
|
|
{
|
|
|
|
Response.StatusCode = 404;
|
|
|
|
return new JsonResult(new { status = 404, message = "Not Found" });
|
|
|
|
}
|
|
|
|
|
2024-02-26 17:44:22 +00:00
|
|
|
var body = await JsonSerializer.DeserializeAsync<Dictionary<string, string>>(Request.Body);
|
|
|
|
if (body is null)
|
|
|
|
{
|
|
|
|
Response.StatusCode = 400;
|
|
|
|
return new JsonResult(new { status = 400, message = "Bad Request" });
|
|
|
|
}
|
2024-02-26 02:50:48 +00:00
|
|
|
|
2024-02-26 17:44:22 +00:00
|
|
|
post.Body = body["content"];
|
|
|
|
post.Title = body["title"];
|
2024-02-26 02:50:48 +00:00
|
|
|
_blogPostService.UpdatePost(post);
|
|
|
|
|
|
|
|
return new JsonResult(new { status = 200, message = "OK" });
|
|
|
|
}
|
|
|
|
}
|