Allow async method for HeaderPropagationOptions.ValueFilter
- Dominant language
- C#
- Stars
- 38.4k
- Forks
- 10.9k
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 290
Description
## Background and Motivation
Consider following code:
``` csharp
builder.Services.AddHttpClient()
.AddHeaderPropagation(options =>
{
options.Headers.Add("Authorization", context =>
{
// await here
var access_token = context.HttpContext.GetTokenAsync("access_token").GetAwaiter().GetResult();
return access_token ?? StringValues.Empty;
});
});
```
## Proposed API
Add property `AsyncValueFilter` for HeaderPropagationEntry.
```diff
namespace Microsoft.AspNetCore.HeaderPropagation;
public class HeaderPropagationEntry
{
+ public Func>? AsyncValueFilter { get; }
}
public sealed class HeaderPropagationEntryCollection : Collection
{
+ public void Add(string headerName, Func> valueFilter);
}
```
## Usage Examples
```csharp
builder.Services.AddHttpClient()
.AddHeaderPropagation(options =>
{
options.Headers.Add("Authorization", async context =>
{
// await here
var access_token = await context.HttpContext.GetTokenAsync("access_token");
return access_token ?? StringValues.Empty;
});
});
```
Contributor guide
Assessment
This issue has not been assessed yet.