38 lines
1.1 KiB
C#
38 lines
1.1 KiB
C#
using System;
|
|
using System.Net.Http;
|
|
|
|
namespace FastGithub.ReverseProxy
|
|
{
|
|
/// <summary>
|
|
/// SniContext扩展
|
|
/// </summary>
|
|
static class SniContextExtensions
|
|
{
|
|
private static readonly HttpRequestOptionsKey<SniContext> key = new(nameof(SniContext));
|
|
|
|
/// <summary>
|
|
/// 设置SniContext
|
|
/// </summary>
|
|
/// <param name="httpRequestMessage"></param>
|
|
/// <param name="context"></param>
|
|
public static void SetSniContext(this HttpRequestMessage httpRequestMessage, SniContext context)
|
|
{
|
|
httpRequestMessage.Options.Set(key, context);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取SniContext
|
|
/// </summary>
|
|
/// <param name="httpRequestMessage"></param>
|
|
/// <returns></returns>
|
|
public static SniContext GetSniContext(this HttpRequestMessage httpRequestMessage)
|
|
{
|
|
if (httpRequestMessage.Options.TryGetValue(key, out var value))
|
|
{
|
|
return value;
|
|
}
|
|
throw new InvalidOperationException($"请先调用{nameof(SetSniContext)}");
|
|
}
|
|
}
|
|
}
|