using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Newsbot.Collector.Database.Repositories; using Newsbot.Collector.Domain.Interfaces; using Newsbot.Collector.Domain.Models; namespace Newsbot.Collector.Api.Controllers; [ApiController] [Route("api/discord/webhooks")] public class DiscordWebHookController : ControllerBase { private readonly ILogger _logger; private readonly ConnectionStrings _settings; private readonly IDiscordWebHooksRepository _webhooks; public DiscordWebHookController(ILogger logger, IOptions settings) { _logger = logger; _settings = settings.Value; _webhooks = new DiscordWebhooksTable(_settings.Database); } [HttpGet(Name = "GetDiscordWebhooks")] public IEnumerable Get(int page) { return _webhooks.List(page); } [HttpPost(Name = "New")] public DiscordWebHookModel New(string url, string server, string channel) { return _webhooks.New(new DiscordWebHookModel { Url = url, Server = server, Channel = channel, Enabled = true, }); } [HttpGet("by/serverAndChannel")] public IEnumerable GetByServerAndChannel(string server, string channel) { return _webhooks.ListByServerAndChannel(server, channel, 25); } [HttpGet("{id}")] public DiscordWebHookModel GetById(Guid id) { return _webhooks.GetByID(id); } [HttpPost("{id}/disable")] public void DisableById(Guid id) { _webhooks.Disable(id); } [HttpPost("{id}/enable")] public void EnableById(Guid id) { _webhooks.Enable(id); } }