internal static TProxy CreateProxy <TProxy>(IServiceProvider container) where TProxy : IApiContract { object proxy = DispatchProxyAsync.Create <TProxy, HttpDispatchProxy>(); var proxyContextFilter = container.GetRequiredService <IProxyContextFilter>(); var proxyContext = new ProxyContext(typeof(TProxy)); var cultureFactory = container.GetService <ICultureFactory>(); if (cultureFactory != null) { proxyContext.CultureFactory = cultureFactory.Invoke; } proxyContextFilter.Invoke(proxyContext); var initializer = proxy.GetType().GetMethod(nameof(HttpDispatchProxy.Initialize)); if (initializer == null) { throw new ArgumentNullException(nameof(initializer)); } initializer.Invoke(proxy, new[] { proxyContext, (object)container.GetService <IProxyManager>() }); return((TProxy)proxy); }
public static TProxy CreateProxy <TProxy>(IServiceProvider container) where TProxy : IApiContract { dynamic proxy = DispatchProxyAsync.Create <TProxy, HttpDispatchProxy>(); var contextAcessor = container.GetService <IHttpContextAccessor>(); if (contextAcessor?.HttpContext == null) { return(default(TProxy)); } var context = new ProxyContext(typeof(TProxy)); if (contextAcessor?.HttpContext.Request != null) { context.ClientIp = contextAcessor.HttpContext.GetIp(); context.UserAgent = contextAcessor.HttpContext.Request.GetUserAgent(); if (contextAcessor.HttpContext.Request.QueryString.HasValue) { context.QueryString = contextAcessor.HttpContext.Request.QueryString.Value; } } proxy.Initialize(context, container.GetService <IProxyManager>()); return(proxy); }
public void Invoke(ProxyContext proxyContext) { proxyContext.ClientIp = LocalIpAddress; proxyContext.UserAgent = NetCoreStackUserAgent; }