Files
band/src/Band/Controllers/BandController.cs
2025-09-05 19:56:32 -07:00

88 lines
4.0 KiB
C#

using Band.Models;
using Band.Services;
using Microsoft.AspNetCore.Mvc;
namespace Band.Controllers;
[ApiController]
[Route("api/v1/[controller]")]
public class BandController(BandService pushPostService, Dictionary<string, Token> tokens) : ControllerBase {
private readonly BandService _BandService = pushPostService;
private readonly Dictionary<string, Token> _Tokens = tokens;
[HttpGet("display")]
public IActionResult Get(string code) {
Token? token = _BandService.GetToken(code);
if (token is null) {
if (_Tokens is not null) {
_ = _BandService.GetAuthorizationCode();
}
return BadRequest("Unable to get token");
}
_Tokens.Add(code, token);
return Content(code, "text/plain");
}
[HttpGet("bands")]
public IActionResult Bands() {
Models.Bands.Root? result = _BandService.GetBands(_Tokens);
return result is null ? _Tokens.Count == 0 ? BadRequest("Tokens is empty!") : BadRequest("Unable to get bands!") : Ok(result);
}
[HttpGet("{band_key}/profile")]
public IActionResult Profile(string band_key) {
Models.Profile.Root? result = _BandService.GetProfile(_Tokens, band_key);
return result is null ? _Tokens.Count == 0 ? BadRequest("Tokens is empty!") : BadRequest("Unable to get profile!") : Ok(result);
}
[HttpGet("{band_key}/posts")]
public IActionResult Posts(string band_key) {
Models.Posts.Root? result = _BandService.GetPosts(_Tokens, band_key);
return result is null ? _Tokens.Count == 0 ? BadRequest("Tokens is empty!") : BadRequest("Unable to get posts!") : Ok(result);
}
[HttpGet("{band_key}/{post_key}/get-post")]
public IActionResult GetPost(string band_key, string post_key) {
Models.Post.Root? result = _BandService.GetPost(_Tokens, band_key, post_key);
return result is null ? _Tokens.Count == 0 ? BadRequest("Tokens is empty!") : BadRequest("Unable to get post!") : Ok(result);
}
[HttpGet("{band_key}/{post_key}/comments")]
public IActionResult Comments(string band_key, string post_key, string sort = "recent") {
Models.Comments.Root? result = _BandService.GetComments(_Tokens, band_key, post_key, sort);
return result is null ? _Tokens.Count == 0 ? BadRequest("Tokens is empty!") : BadRequest("Unable to get comments!") : Ok(result);
}
[HttpGet("{band_key}/albums")]
public IActionResult Albums(string band_key) {
Models.Albums.Root? result = _BandService.GetAlbums(_Tokens, band_key);
return result is null ? _Tokens.Count == 0 ? BadRequest("Tokens is empty!") : BadRequest("Unable to get albums!") : Ok(result);
}
[HttpGet("{band_key}/photos")]
public IActionResult Photos(string band_key, string photo_album_key) {
Models.Photos.Root? result = _BandService.GetPhotos(_Tokens, band_key, photo_album_key);
return result is null ? _Tokens.Count == 0 ? BadRequest("Tokens is empty!") : BadRequest("Unable to get photos!") : Ok(result);
}
[HttpGet("{band_key}/permissions")]
public IActionResult Permissions(string band_key, string permissions) {
Models.Permissions.Root? result = _BandService.GetPermissions(_Tokens, band_key, permissions);
return result is null ? _Tokens.Count == 0 ? BadRequest("Tokens is empty!") : BadRequest("Unable to get permissions!") : Ok(result);
}
[HttpGet("{band_key}/post")]
public IActionResult Post(string band_key, string message) {
Root? result = _BandService.WritePost(_Tokens, band_key, message);
return result is null ? _Tokens.Count == 0 ? BadRequest("Tokens is empty!") : BadRequest("Unable to post message!") : Ok(result);
}
[HttpGet("{band_key}/post-comment")]
public IActionResult WritePostComment(string band_key, string post_key, string message) {
Root? result = _BandService.WritePostComment(_Tokens, band_key, post_key, message);
return result is null ? _Tokens.Count == 0 ? BadRequest("Tokens is empty!") : BadRequest("Unable to post message!") : Ok(result);
}
}