Skip to content

Commit 367e5c0

Browse files
committed
Adding base policy builder extension
1 parent 05faa28 commit 367e5c0

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using Microsoft.AspNetCore.Cors.Infrastructure;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Reflection.PortableExecutable;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
9+
namespace Htmx;
10+
11+
public static class HtmxCorsPolicyBuilderExtensions
12+
{
13+
/// <summary>
14+
/// Adds Htmx request headers to the policy.
15+
/// </summary>
16+
/// <param name="policyBuilder"></param>
17+
/// <param name="excludeHeaders"></param>
18+
/// <returns>The current policy builder.</returns>
19+
public static CorsPolicyBuilder WithHtmxHeaders(this CorsPolicyBuilder policyBuilder, params string[] excludeHeaders)
20+
{
21+
IEnumerable<string> headers = new List<string> ()
22+
{
23+
HtmxRequestHeaders.Keys.CurrentUrl,
24+
HtmxRequestHeaders.Keys.HistoryRestoreRequest,
25+
HtmxRequestHeaders.Keys.Prompt,
26+
HtmxRequestHeaders.Keys.Request,
27+
HtmxRequestHeaders.Keys.Target,
28+
HtmxRequestHeaders.Keys.TriggerName,
29+
HtmxRequestHeaders.Keys.Trigger,
30+
HtmxRequestHeaders.Keys.Boosted
31+
};
32+
33+
if (excludeHeaders.Length > 0)
34+
{
35+
headers = headers.Except(excludeHeaders);
36+
}
37+
38+
policyBuilder.WithHeaders(headers.ToArray());
39+
40+
return policyBuilder;
41+
}
42+
43+
/// <summary>
44+
/// Adds Htmx response headers to the policy.
45+
/// </summary>
46+
/// <returns>The current policy builder.</returns>
47+
public static CorsPolicyBuilder WithExposedHtmxHeaders(this CorsPolicyBuilder policyBuilder, params string[] excludeHeaders)
48+
{
49+
IEnumerable<string> headers = new List<string>()
50+
{
51+
HtmxResponseHeaders.Keys.PushUrl,
52+
HtmxResponseHeaders.Keys.Location,
53+
HtmxResponseHeaders.Keys.Redirect,
54+
HtmxResponseHeaders.Keys.Refresh,
55+
HtmxResponseHeaders.Keys.Trigger,
56+
HtmxResponseHeaders.Keys.TriggerAfterSettle,
57+
HtmxResponseHeaders.Keys.TriggerAfterSwap,
58+
HtmxResponseHeaders.Keys.Reswap,
59+
HtmxResponseHeaders.Keys.Retarget,
60+
HtmxResponseHeaders.Keys.ReplaceUrl
61+
};
62+
63+
if (excludeHeaders.Length > 0)
64+
{
65+
headers = headers.Except(excludeHeaders);
66+
}
67+
68+
policyBuilder.WithExposedHeaders(headers.ToArray());
69+
70+
return policyBuilder;
71+
}
72+
}

0 commit comments

Comments
 (0)