using Band.Models; using Band.Services; using Microsoft.AspNetCore.Mvc; namespace Band.Controllers; [ApiController] [Route("api/v1/[controller]")] public class BandController(BandService pushPostService, Dictionary tokens) : ControllerBase { private readonly BandService _BandService = pushPostService; private readonly Dictionary _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); } }