Skip to content

Commit 4080780

Browse files
committed
UseHttpUserRequestContext
1 parent 01c9b76 commit 4080780

3 files changed

Lines changed: 61 additions & 7 deletions

File tree

SW.HttpExtensions.UnitTests/SW.HttpExtensions.UnitTests.csproj

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
11-
<PackageReference Include="MSTest.TestAdapter" Version="2.1.0" />
12-
<PackageReference Include="MSTest.TestFramework" Version="2.1.0" />
13-
<PackageReference Include="coverlet.collector" Version="1.2.0" />
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
11+
<PackageReference Include="MSTest.TestAdapter" Version="2.1.2" />
12+
<PackageReference Include="MSTest.TestFramework" Version="2.1.2" />
13+
<PackageReference Include="coverlet.collector" Version="1.3.0">
14+
<PrivateAssets>all</PrivateAssets>
15+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
16+
</PackageReference>
1417
</ItemGroup>
1518

1619
<ItemGroup>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using Microsoft.AspNetCore.Builder;
2+
using Microsoft.Extensions.DependencyInjection;
3+
using SW.PrimitiveTypes;
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Linq;
7+
using System.Runtime.CompilerServices;
8+
using System.Text;
9+
10+
namespace SW.HttpExtensions
11+
{
12+
public static class IAppBuilderExtensions
13+
{
14+
15+
public static IApplicationBuilder UseHttpUserRequestContext(this IApplicationBuilder applicationBuilder)
16+
{
17+
18+
applicationBuilder.Use(async (httpContext, next) =>
19+
{
20+
if (httpContext.User.Identity.IsAuthenticated)
21+
{
22+
var vals = new List<RequestValue>();
23+
24+
foreach (var h in httpContext.Request.Headers)
25+
vals.Add(new RequestValue(h.Key, string.Join(";", h.Value.ToArray()), RequestValueType.HttpHeader));
26+
27+
foreach (var q in httpContext.Request.Query)
28+
//if (!ignoredKeys.Contains(q.Key, StringComparer.OrdinalIgnoreCase))
29+
vals.Add(new RequestValue(q.Key, string.Join(";", q.Value.ToArray()), RequestValueType.QueryParameter));
30+
31+
string correlationId = Guid.NewGuid().ToString("N");
32+
33+
if (httpContext.Request.Headers.TryGetValue("request-correlation-id", out var cid) && cid.Count > 0)
34+
correlationId = cid.First();
35+
36+
var requestContext = httpContext.RequestServices.GetRequiredService<RequestContext>();
37+
38+
requestContext.Set(httpContext.User, vals, correlationId);
39+
40+
}
41+
42+
43+
await next();
44+
});
45+
46+
return applicationBuilder;
47+
48+
}
49+
}
50+
}

SW.HttpExtensions/SW.HttpExtensions.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.4" />
15+
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
16+
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.6" />
1617
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
17-
<PackageReference Include="SimplyWorks.PrimitiveTypes" Version="2020.7.15.4" />
18-
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.6.0" />
18+
<PackageReference Include="SimplyWorks.PrimitiveTypes" Version="2020.7.23.2" />
19+
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.7.1" />
1920
</ItemGroup>
2021

2122
<ItemGroup>

0 commit comments

Comments
 (0)