using Jellyfin.Plugin.Simkl.API.Objects;
using Jellyfin.Plugin.Simkl.API.Responses;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Services;
using Microsoft.Extensions.Logging;
#pragma warning disable CA1801
namespace Jellyfin.Plugin.Simkl.API
{
///
/// Server endpoints.
///
public class ServerEndpoint : IService, IHasResultFactory
{
private readonly SimklApi _api;
private readonly ILogger _logger;
private readonly IJsonSerializer _json;
///
/// Initializes a new instance of the class.
///
/// Instance of the interface.
/// Instance of the interface.
/// Instance of the interface.
public ServerEndpoint(ILoggerFactory loggerFactory, IJsonSerializer json, IHttpClient httpClient)
{
_logger = loggerFactory.CreateLogger();
_json = json;
_api = new SimklApi(json, loggerFactory.CreateLogger(), httpClient);
}
///
/// Gets or sets result factory.
///
public IHttpResultFactory ResultFactory { get; set; }
///
/// Gets or sets request.
///
public IRequest Request { get; set; }
///
/// Get pin request.
///
/// The request.
/// The code response.
public CodeResponse Get(GetPin request)
{
return _api.GetCode().GetAwaiter().GetResult();
}
///
/// Get pin status.
///
/// The request.
/// Code status response.
public CodeStatusResponse Get(GetPinStatus request)
{
return _api.GetCodeStatus(request.user_code).GetAwaiter().GetResult();
}
///
/// Get user settings.
///
/// The request.
/// User settings.
public UserSettings Get(GetUserSettings request)
{
_logger.LogDebug(_json.SerializeToString(request));
return _api.GetUserSettings(SimklPlugin.Instance.Configuration.GetByGuid(request.UserId).UserToken).GetAwaiter().GetResult();
}
}
}