Skip to content

Instantly share code, notes, and snippets.

View dj-nitehawk's full-sized avatar

Dĵ ΝιΓΞΗΛψΚ dj-nitehawk

View GitHub Profile
@dj-nitehawk
dj-nitehawk / Program.cs
Created September 1, 2023 11:18
Correct middleware order for UseSpa() from Microsoft.AspNetCore.SpaServices.Extensions
var builder = WebApplication.CreateBuilder();
builder.Services.AddFastEndpoints();
var app = builder.Build();
app.UseRouting(); //should be before auth/cors/fastendpoints middlewares.
app.UseAuthorization();
app.UseFastEndpoints();
app.UseEndpoints(_ => { }); //should be right after UseFastEndpoints(). this is the terminating middleware for endpoint routes.
if (app.Environment.IsDevelopment())
@dj-nitehawk
dj-nitehawk / Program.cs
Last active September 3, 2023 20:33
Middleware order for Blazor Serverside
using FastEndpoints;
using FastEndpoints.Swagger;
var bld = WebApplication.CreateBuilder(args);
bld.Services.AddFastEndpoints();
bld.Services.AddRazorPages();
bld.Services.AddServerSideBlazor();
bld.Services.SwaggerDocument();
var app = bld.Build();
@dj-nitehawk
dj-nitehawk / Program.cs
Created September 1, 2023 10:55
Serialization of XML with FastEndpoints
var bld = WebApplication.CreateBuilder();
bld.Services
.AddSingleton(typeof(IRequestBinder<>), typeof(CustomBinder<>))
.AddFastEndpoints()
.SwaggerDocument();
var app = bld.Build();
app.UseAuthorization()
.UseFastEndpoints()
.UseSwaggerGen();
@dj-nitehawk
dj-nitehawk / program.cs
Created July 31, 2023 06:03
FastEndpoints usage with Ardalis.Result package
using Ardalis.Result;
using FastEndpoints;
using FastEndpoints.Swagger;
var bld = WebApplication.CreateBuilder();
bld.Services
.AddFastEndpoints()
.SwaggerDocument();
var app = bld.Build();
@dj-nitehawk
dj-nitehawk / Program.cs
Last active December 14, 2023 02:51
Adding/Throwing validation errors from within domain objects/services instead of using Results Pattern
using FastEndpoints;
using FastEndpoints.Swagger;
var bld = WebApplication.CreateBuilder();
bld.Services
.AddFastEndpoints()
.SwaggerDocument();
var app = bld.Build();
app.UseFastEndpoints()
@dj-nitehawk
dj-nitehawk / Endpoint.cs
Last active September 21, 2023 20:26
Session Auth With FastEndpoints + Swagger
public sealed class Endpoint : EndpointWithoutRequest
{
public override void Configure()
{
Get("/protected");
Claims("userId");
Roles("Some_Role_Name");
Permissions("Some_Permission");
}
@dj-nitehawk
dj-nitehawk / EndpointFilter.cs
Last active October 10, 2023 01:57
IEndpointFilter usage in FastEndpoints
sealed class OperationCancelledFilter : IEndpointFilter
{
private readonly ILogger<OperationCancelledFilter> logger;
public OperationCancelledFilter(ILogger<OperationCancelledFilter> logger)
{
this.logger = logger;
}
public async ValueTask<object?> InvokeAsync(EndpointFilterInvocationContext context, EndpointFilterDelegate next)
@dj-nitehawk
dj-nitehawk / Program.cs
Created July 11, 2023 11:28
Asp.Versioning.Http Example
using Asp.Versioning;
using Asp.Versioning.Conventions;
using FastEndpoints;
using FastEndpoints.AspVersioning;
using FastEndpoints.Swagger;
VersionSets.CreateApi(">>Orders<<", v => v
.HasApiVersion(1.0)
.HasApiVersion(2.0));
@dj-nitehawk
dj-nitehawk / ApiKeyAuth.cs
Last active March 5, 2024 15:17
API Key Authentication With FastEndpoints + Swagger
sealed class ApikeyAuth(IOptionsMonitor<AuthenticationSchemeOptions> options,
ILoggerFactory logger,
UrlEncoder encoder,
IConfiguration config)
: AuthenticationHandler<AuthenticationSchemeOptions>(options, logger, encoder)
{
internal const string SchemeName = "ApiKey";
internal const string HeaderName = "x-api-key";
readonly string _apiKey = config["Auth:ApiKey"] ?? throw new InvalidOperationException("Api key not set in appsettings.json");
@dj-nitehawk
dj-nitehawk / Program.cs
Last active January 17, 2024 03:42
Endpoint Grouping With FastEndpoints
using FastEndpoints;
using FastEndpoints.Swagger;
var bld = WebApplication.CreateBuilder();
bld.Services
.AddAuthorization()
.AddFastEndpoints()
.SwaggerDocument(o => o.AutoTagPathSegmentIndex = 0);
var app = bld.Build();