using System;
using System.Net.Http;
namespace FastGithub.ReverseProxy
{
    /// 
    /// 请求上下文扩展
    /// 
    static class RequestContextExtensions
    {
        private static readonly HttpRequestOptionsKey key = new(nameof(RequestContext));
        /// 
        /// 设置RequestContext
        /// 
        /// 
        /// 
        public static void SetRequestContext(this HttpRequestMessage httpRequestMessage, RequestContext requestContext)
        {
            httpRequestMessage.Options.Set(key, requestContext);
        }
        /// 
        /// 获取RequestContext
        /// 
        /// 
        /// 
        public static RequestContext GetRequestContext(this HttpRequestMessage httpRequestMessage)
        {
            return httpRequestMessage.Options.TryGetValue(key, out var requestContext)
                ? requestContext
                : throw new InvalidOperationException($"请先调用{nameof(SetRequestContext)}");
        }
    }
}