re-adding/reworking voting capabilities

This commit is contained in:
Toastie 2025-03-25 14:58:02 +13:00
parent 69a02e0e15
commit 9fe75d930f
Signed by: toastie_t0ast
GPG key ID: 74226CF45EEE5AAF
24 changed files with 400 additions and 361 deletions
src/EllieBot.VotesApi

View file

@ -1,11 +1,12 @@
using Microsoft.AspNetCore.Authorization;
using System;
using Grpc.Core;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using EllieBot.VotesApi.Services;
using EllieBot.GrpcVotesApi;
namespace EllieBot.VotesApi
{
@ -21,11 +22,17 @@ namespace EllieBot.VotesApi
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSingleton<IVotesCache, FileVotesCache>();
services.AddSwaggerGen(static c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "EllieBot.VotesApi", Version = "v1" });
});
services.AddGrpcClient<VoteService.VoteServiceClient>(options =>
{
var grpcServiceUrl = Configuration["GrpcServiceUrl"]!;
options.Address = new Uri(grpcServiceUrl);
})
.ConfigureChannel((sp, c) =>
{
c.Credentials = ChannelCredentials.Insecure;
c.ServiceProvider = sp;
});
services
.AddAuthentication(opts =>
@ -40,8 +47,12 @@ namespace EllieBot.VotesApi
opts.DefaultPolicy = new AuthorizationPolicyBuilder(AuthHandler.SchemeName)
.RequireAssertion(static _ => false)
.Build();
opts.AddPolicy(Policies.DiscordsAuth, static policy => policy.RequireClaim(AuthHandler.DiscordsClaim));
opts.AddPolicy(Policies.TopggAuth, static policy => policy.RequireClaim(AuthHandler.TopggClaim));
opts.AddPolicy(Policies.DiscordsAuth,
static policy => policy.RequireClaim(AuthHandler.DiscordsClaim));
opts.AddPolicy(Policies.TopggAuth,
static policy => policy.RequireClaim(AuthHandler.TopggClaim));
opts.AddPolicy(Policies.DiscordbotlistAuth,
static policy => policy.RequireClaim(AuthHandler.DiscordbotlistClaim));
});
}
@ -51,8 +62,6 @@ namespace EllieBot.VotesApi
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(static c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "EllieBot.VotesApi v1"));
}
app.UseHttpsRedirection();