using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace Jellyfin.Plugin.AnilistSync.API { /// /// Anilist endpoints. /// [ApiController] [Authorize] [Route("AnilistSync")] public class Endpoints : ControllerBase { private readonly AnilistApi _anilistApi; /// /// Initializes a new instacne fo the class. /// /// public Endpoints(AnilistApi anilistApi) { _anilistApi = anilistApi; } /// /// Gets the OAuth token. /// /// User code. /// Code response containing token. [HttpGet("oauth/token/{userCode}")] public async Task> GetToken([FromRoute] string userCode) { return await _anilistApi.GetToken(userCode); } /// /// Gets the currently authenticated user /// /// The user ID. /// Root object containing User object [HttpGet("users/settings/{userId}")] public async Task> GetUser([FromRoute] Guid userId) { var userConfiguration = Plugin.Instance?.Configuration.GetByGuid(userId); if (userConfiguration == null) { return NotFound(); } return await _anilistApi.GetUser(userConfiguration.UserToken); } } }