Skip to content

Instantly share code, notes, and snippets.

View full-sized avatar

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

View GitHub Profile
@dj-nitehawk
dj-nitehawk / AddCustomHeader.cs
Created September 18, 2023 02:07
Customizing Swagger Spec With An IOperationProcessor
View AddCustomHeader.cs
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
Last active September 13, 2023 06:09
Showing deprecated endpoint versions in Swagger
View Program.cs
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
Created September 8, 2023 09:06
JsonPatch usage with Swagger UI support
View Program.cs
using FastEndpoints.Swagger;
using Microsoft.AspNetCore.JsonPatch;
using Microsoft.AspNetCore.JsonPatch.Operations;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using NJsonSchema.Annotations;
using System.Text.Json;
var bld = WebApplication.CreateBuilder();
bld.Services
@dj-nitehawk
dj-nitehawk / Program.cs
Created September 7, 2023 03:27
Storing `IJobStorageRecord` and `IEventStorageRecord` via EntityFramework Core
View Program.cs
using FastEndpoints;
using MessagePack;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
public class JobRecord : IJobStorageRecord
{
public Guid Id { get; set; }
public string QueueID { get; set; }
public object Command { get; set; }
@dj-nitehawk
dj-nitehawk / Program.cs
Last active September 5, 2023 07:23
Request DTO inheritance with Validator composition
View Program.cs
public class BaseRequest
{
public string? Id { get; init; }
}
public class BaseRequestValidator : Validator<BaseRequest>
{
public BaseRequestValidator()
{
RuleFor(x => x.Id)
@dj-nitehawk
dj-nitehawk / Program.cs
Created September 1, 2023 11:18
Correct middleware order for UseSpa() from Microsoft.AspNetCore.SpaServices.Extensions
View Program.cs
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
View Program.cs
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
View Program.cs
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
View program.cs
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
Created July 31, 2023 03:45
Adding/Throwing validation errors from within domain objects/services instead of using Results Pattern
View Program.cs
using FastEndpoints;
using FastEndpoints.Swagger;
var bld = WebApplication.CreateBuilder();
bld.Services
.AddFastEndpoints()
.SwaggerDocument();
var app = bld.Build();
app.UseAuthorization()