Newsbot.Collector/Newsbot.Collector.Api/Controllers/DiscordWebHooksController.cs

66 lines
1.8 KiB
C#
Raw Normal View History

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<DiscordWebHookController> _logger;
private readonly ConnectionStrings _settings;
private readonly IDiscordWebHooksRepository _webhooks;
public DiscordWebHookController(ILogger<DiscordWebHookController> logger, IOptions<ConnectionStrings> settings)
{
_logger = logger;
_settings = settings.Value;
_webhooks = new DiscordWebhooksTable(_settings.Database);
}
[HttpGet(Name = "GetDiscordWebhooks")]
public IEnumerable<DiscordWebHookModel> 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<DiscordWebHookModel> 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);
}
}