elliebot/src/EllieBot.VotesApi/Controllers/WebhookController.cs
Toastie 57a5993064
color typereader fix
delmsgoncmd
guildconfig init
2025-03-30 15:06:56 +13:00

69 lines
No EOL
2.2 KiB
C#

using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using EllieBot.GrpcVotesApi;
namespace EllieBot.VotesApi.Controllers
{
[ApiController]
public class WebhookController(ILogger<WebhookController> logger, VoteService.VoteServiceClient client)
: ControllerBase
{
[HttpPost("/discordswebhook")]
[Authorize(Policy = Policies.DiscordsAuth)]
public async Task<IActionResult> DiscordsWebhook([FromBody] DiscordsVoteWebhookModel data)
{
if ((data.Type?.Contains("vote") ?? false) == false)
return Ok();
logger.LogInformation("User {UserId} has voted for Bot {BotId} on {Platform}",
data.User,
data.Bot,
"discords.com");
await client.VoteReceivedAsync(new GrpcVoteData()
{
Type = VoteType.Discords,
UserId = data.User,
});
return Ok();
}
[HttpPost("/topggwebhook")]
[Authorize(Policy = Policies.TopggAuth)]
public async Task<IActionResult> TopggWebhook([FromBody] TopggVoteWebhookModel data)
{
logger.LogInformation("User {UserId} has voted for Bot {BotId} on {Platform}",
data.User,
data.Bot,
"top.gg");
await client.VoteReceivedAsync(new GrpcVoteData()
{
Type = VoteType.Topgg,
UserId = data.User,
});
return Ok();
}
[HttpPost("/discordbotlistwebhook")]
[Authorize(Policy = Policies.DiscordbotlistAuth)]
public async Task<IActionResult> DiscordbotlistWebhook([FromBody] DiscordbotlistVoteWebhookModel data)
{
logger.LogInformation("User {UserId} has voted for Bot on {Platform}",
data.Id,
"discordbotlist.com");
await client.VoteReceivedAsync(new GrpcVoteData()
{
Type = VoteType.Discordbotlist,
UserId = data.Id,
});
return Ok();
}
}
}