using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Jellyfin.Plugin.AnilistSync.API
{
///
/// Anilist endpoints.
///
[ApiController]
[Authorize(Policy = "DefaultAuthorization")]
[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);
}
}
}