diff --git a/Jellyfin.Plugins.Telegram/Api/ServerApiEntryPoint.cs b/Jellyfin.Plugins.Telegram/Api/ServerApiEntryPoint.cs deleted file mode 100644 index 59becce..0000000 --- a/Jellyfin.Plugins.Telegram/Api/ServerApiEntryPoint.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Jellyfin.Plugins.Telegram.Configuration; -using MediaBrowser.Common.Net; -using MediaBrowser.Model.Serialization; -using MediaBrowser.Model.Services; -using Microsoft.Extensions.Logging; - -namespace Jellyfin.Plugins.Telegram.Api -{ - [Route("/Notification/Telegram/Test/{UserId}", "Post", Summary = "Tests Telegram")] - public class TestNotification : IReturnVoid - { - [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public string UserId { get; set; } - } - - public class ServerApiEndpoints : IService - { - private readonly IHttpClient _httpClient; - private readonly IJsonSerializer _jsonSerializer; - private readonly ILogger _logger; - - public ServerApiEndpoints(IHttpClient httpClient, IJsonSerializer jsonSerializer, ILoggerFactory loggerFactory) - { - _httpClient = httpClient; - _jsonSerializer = jsonSerializer; - _logger = loggerFactory.CreateLogger(); - } - - private static TelegramOptions GetOptions(string userId) - { - return Plugin.Instance.Configuration.Options - .FirstOrDefault(u => string.Equals(u.UserId, userId, - StringComparison.OrdinalIgnoreCase)); - } - - private async Task PostAsync(TestNotification request) - { - var options = GetOptions(request.UserId); - - await Notifier.SendNotification( - _httpClient, _jsonSerializer, - options.Token, options.ChatId, options.SilentNotificationEnabled, - "This is a test notification from Jellyfin" - ); - } - - public void Post(TestNotification request) - { - PostAsync(request) - .GetAwaiter() - .GetResult(); - } - } -} diff --git a/Jellyfin.Plugins.Telegram/Api/TelegramNotificationsController.cs b/Jellyfin.Plugins.Telegram/Api/TelegramNotificationsController.cs new file mode 100644 index 0000000..075bbc3 --- /dev/null +++ b/Jellyfin.Plugins.Telegram/Api/TelegramNotificationsController.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Mime; +using System.Threading.Tasks; +using Jellyfin.Plugins.Telegram.Configuration; +using MediaBrowser.Common.Net; +using MediaBrowser.Model.Serialization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using System.Net.Http; + +namespace Jellyfin.Plugins.Telegram.Api +{ + [ApiController] + [Route("Notification/Telegram")] + [Produces(MediaTypeNames.Application.Json)] + public class TelegramNotificationsController : ControllerBase + { + private readonly IHttpClientFactory _httpClientFactory; + private readonly IJsonSerializer _jsonSerializer; + private readonly ILogger _logger; + + public TelegramNotificationsController(IHttpClientFactory httpClientFactory, IJsonSerializer jsonSerializer, ILoggerFactory loggerFactory) + { + _httpClientFactory = httpClientFactory; + _jsonSerializer = jsonSerializer; + _logger = loggerFactory.CreateLogger(); + } + + private static TelegramOptions GetOptions(string userId) + { + return Plugin.Instance.Configuration.Options + .FirstOrDefault(u => string.Equals(u.UserId, userId, + StringComparison.OrdinalIgnoreCase)); + } + + [HttpPost("Test/{userId}")] + [ProducesResponseType(Microsoft.AspNetCore.Http.StatusCodes.Status204NoContent)] + public async Task PostAsync([FromRoute] string userId) + { + var options = GetOptions(userId); + + await Notifier.SendNotification( + _httpClientFactory, + options.Token, options.ChatId, options.SilentNotificationEnabled, + "This is a test notification from Jellyfin" + ); + + return NoContent(); + } + } +} diff --git a/Jellyfin.Plugins.Telegram/Configuration/config.html b/Jellyfin.Plugins.Telegram/Configuration/config.html index 68d2edf..de8a71a 100644 --- a/Jellyfin.Plugins.Telegram/Configuration/config.html +++ b/Jellyfin.Plugins.Telegram/Configuration/config.html @@ -73,35 +73,42 @@

Telegram Settings: