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 / 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 / AddCustomHeader.cs
Created September 18, 2023 02:07
Customizing Swagger Spec With An IOperationProcessor
internal sealed class AddCustomHeader : IOperationProcessor
{
public bool Process(OperationProcessorContext context)
{
var hdrParameter = new OpenApiParameter()
{
Name = "x-custom",
Kind = OpenApiParameterKind.Header,
IsRequired = true,
Type = JsonObjectType.String,
@dj-nitehawk
dj-nitehawk / Program.cs
Created October 6, 2023 10:43
Unit testing an endpoint that executes a command
sealed class MyRequest
{
public int Id { get; set; }
}
public sealed class MyCommand : ICommand<int>
{
public string Identity { get; set; }
}
@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 / 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 / Program.cs
Last active September 13, 2023 06:09
Showing deprecated endpoint versions in Swagger
var bld = WebApplication.CreateBuilder();
bld.Services
.AddFastEndpoints()
.SwaggerDocument(o =>
{
o.DocumentSettings = s =>
{
s.DocumentName = "Initial Release";
s.Version = "v0";
};
@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 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
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();