mirror of
https://github.com/AlexMacocian/Net.Sdk.Web.Extensions.git
synced 2026-07-24 03:56:27 +00:00
Add project files.
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
using AspNetCore.Extensions.Options;
|
||||
using Microsoft.CorrelationVector;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System.Core.Extensions;
|
||||
|
||||
namespace AspNetCore.Extensions.Middleware;
|
||||
|
||||
public sealed class CorrelationVectorMiddleware : IMiddleware
|
||||
{
|
||||
private readonly CorrelationVectorOptions options;
|
||||
|
||||
public CorrelationVectorMiddleware() : this(Microsoft.Extensions.Options.Options.Create<CorrelationVectorOptions>(new()))
|
||||
{
|
||||
}
|
||||
|
||||
public CorrelationVectorMiddleware(IOptions<CorrelationVectorOptions> options)
|
||||
{
|
||||
this.options = options.ThrowIfNull().Value.ThrowIfNull();
|
||||
}
|
||||
|
||||
public Task InvokeAsync(HttpContext context, RequestDelegate next)
|
||||
{
|
||||
var cv = new CorrelationVector();
|
||||
if (context.Items.TryGetValue(this.options.Header, out var correlationVectorVal) &&
|
||||
correlationVectorVal is string correlationVectorStr)
|
||||
{
|
||||
cv = CorrelationVector.Parse(correlationVectorStr);
|
||||
cv.Increment();
|
||||
}
|
||||
|
||||
context.SetCorrelationVector(cv);
|
||||
return next(context);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user