Files
vegasco/src/WebApi/Endpoints/EndpointExtensions.cs
ThompsonNye dcb82414b9
Some checks failed
Build Vegasco Server / build (push) Failing after 59s
Add nbgv and add server info endpoint
2024-08-23 18:55:05 +02:00

54 lines
1.6 KiB
C#

using Asp.Versioning.Builder;
using Asp.Versioning.Conventions;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Vegasco.WebApi.Cars;
using Vegasco.WebApi.Common;
using Vegasco.WebApi.Consumptions;
using Vegasco.WebApi.Info;
namespace Vegasco.WebApi.Endpoints;
public static class EndpointExtensions
{
public static IServiceCollection AddEndpointsFromAssemblyContaining<T>(this IServiceCollection services)
{
var assembly = typeof(T).Assembly;
ServiceDescriptor[] serviceDescriptors = assembly
.DefinedTypes
.Where(type => type is { IsAbstract: false, IsInterface: false } &&
type.IsAssignableTo(typeof(IEndpoint)))
.Select(type => ServiceDescriptor.Transient(typeof(IEndpoint), type))
.ToArray();
services.TryAddEnumerable(serviceDescriptors);
return services;
}
public static void MapEndpoints(this IEndpointRouteBuilder builder)
{
ApiVersionSet apiVersionSet = builder.NewApiVersionSet()
.HasApiVersion(1.0)
.Build();
RouteGroupBuilder versionedApis = builder.MapGroup("/v{apiVersion:apiVersion}")
.WithApiVersionSet(apiVersionSet)
.RequireAuthorization(Constants.Authorization.RequireAuthenticatedUserPolicy);
GetCar.MapEndpoint(versionedApis);
GetCars.MapEndpoint(versionedApis);
CreateCar.MapEndpoint(versionedApis);
UpdateCar.MapEndpoint(versionedApis);
DeleteCar.MapEndpoint(versionedApis);
GetConsumptions.MapEndpoint(versionedApis);
GetConsumption.MapEndpoint(versionedApis);
CreateConsumption.MapEndpoint(versionedApis);
UpdateConsumption.MapEndpoint(versionedApis);
DeleteConsumption.MapEndpoint(versionedApis);
GetServerInfo.MapEndpoint(versionedApis);
}
}