/// <summary>
        /// 获取终结点地址
        /// </summary>
        /// <returns>终结点地址</returns>
        private EndpointAddress GetEndpointAddress <T>()
        {
            string configName = typeof(T).FullName;

            if (!ConfigMediator.EndpointElements.ContainsKey(configName))
            {
                throw new NullReferenceException($"名称为\"{configName}\"的终结点未配置!");
            }

            EndpointElement endpointElement = ConfigMediator.EndpointElements[configName];
            Uri             uri             = new Uri(endpointElement.Address);

            AddressHeader[] addressHeaders = null;

            if (endpointElement.HeaderProviderElement != null &&
                !string.IsNullOrWhiteSpace(endpointElement.HeaderProviderElement.Type) &&
                !string.IsNullOrWhiteSpace(endpointElement.HeaderProviderElement.Assembly))
            {
                Assembly assembly = Assembly.Load(endpointElement.HeaderProviderElement.Assembly);
                Type     type     = assembly.GetType(endpointElement.HeaderProviderElement.Type);

                if (!typeof(IHeaderProvider).IsAssignableFrom(type))
                {
                    throw new InvalidOperationException($"类型\"{type.FullName}\"未实现接口\"IHeaderProvider\"!");
                }

                IHeaderProvider headerProvider = (IHeaderProvider)Activator.CreateInstance(type);
                addressHeaders = headerProvider.GetHeaders();
            }

            EndpointAddress address = new EndpointAddress(uri, addressHeaders ?? new AddressHeader[0]);

            return(address);
        }
        T IObjectTypeDeserializer.Deserialize <T>(IHeaderProvider dictionary, string key, T defaultValue)
        {
            if (!dictionary.TryGetHeader(key, out var value))
            {
                return(defaultValue);
            }
            //                throw new KeyNotFoundException($"The key was not present: {key}");

            return(Deserialize <T>(value));
        }
예제 #3
0
 public ConnectionManagerOfT(IServiceProvider serviceProvider,
                             IServerInvocatorContextFactory <TInvocator> invocatorContextFactory,
                             IStreamCompressor compressor,
                             IHandshakeStateTransport initState,
                             IHeaderProvider headerProvider, ILoggerFactory loggerFactory)
     : base(serviceProvider, compressor, initState, headerProvider, loggerFactory)
 {
     _invocatorContextFactory = invocatorContextFactory ?? throw new ArgumentNullException(nameof(invocatorContextFactory));
     InvocatorContext         = _invocatorContextFactory.CreateInvocatorContext();
 }
예제 #4
0
        public JsonHeaders(IHeaderProvider provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            _provider = provider;

            _deserializer = JsonMessageSerializer.Deserializer;
        }
예제 #5
0
        private string GetIdToken(IHeaderProvider headerProvider)
        {
            var headers = headerProvider.Headers;
            var authorizationHeaderValues = headers["Authorization"];

            if (authorizationHeaderValues.Count == 0)
            {
                return(null);
            }
            return(headers["Authorization"][0].Remove(0, "Bearer ".Length));
        }
예제 #6
0
        public ProxyManager(IProxyTypeManager typeManager,
                            IHeaderProvider headerProvider,
                            IHttpContextAccessor httpContextAccessor,
                            IHttpClientAccessor httpClientAccessor,
                            IProxyEndpointManager endpointManager,
                            IProxyContentStreamProvider streamProvider,
                            IOptions <ProxyOptions> options)
        {
            if (typeManager == null)
            {
                throw new ArgumentNullException(nameof(typeManager));
            }

            if (headerProvider == null)
            {
                throw new ArgumentNullException(nameof(headerProvider));
            }

            if (httpContextAccessor == null)
            {
                throw new ArgumentNullException(nameof(httpContextAccessor));
            }

            if (httpClientAccessor == null)
            {
                throw new ArgumentNullException(nameof(httpClientAccessor));
            }

            if (endpointManager == null)
            {
                throw new ArgumentNullException(nameof(endpointManager));
            }

            if (streamProvider == null)
            {
                throw new ArgumentNullException(nameof(endpointManager));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            _typeManager         = typeManager;
            _headerProvider      = headerProvider;
            _httpContextAccessor = httpContextAccessor;
            _httpClientAccessor  = httpClientAccessor;
            _endpointManager     = endpointManager;
            _streamProvider      = streamProvider;
            _options             = options;
        }
예제 #7
0
        public JsonHeaders(IObjectTypeDeserializer deserializer, IHeaderProvider provider)
        {
            if (deserializer == null)
            {
                throw new ArgumentNullException(nameof(deserializer));
            }
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            _deserializer = deserializer;
            _provider     = provider;
        }
예제 #8
0
 public ConnectionManager(IServiceProvider serviceProvider,
                          IStreamCompressor compressor,
                          IHandshakeStateTransport initState,
                          IHeaderProvider headerProvider,
                          ILoggerFactory loggerFactory)
 {
     _serviceProvider = serviceProvider;
     _compressor      = compressor;
     _initState       = initState;
     _headerProvider  = headerProvider;
     _loggerFactory   = loggerFactory;
     _logger          = _loggerFactory.CreateLogger <ConnectionManager>();
     Connections      = new ConcurrentDictionary <string, WebSocketTransport>(StringComparer.OrdinalIgnoreCase);
 }
예제 #9
0
 T IObjectTypeDeserializer.Deserialize <T>(IHeaderProvider dictionary, string key, T defaultValue)
 {
     return(dictionary.TryGetHeader(key, out var value)
         ? Deserialize <T>(value)
         : defaultValue);
 }
예제 #10
0
 public static T Deserialize <T>(IHeaderProvider dictionary, string key, T defaultValue)
 {
     return(Cached.Deserializer.Value.Deserialize(dictionary, key, defaultValue));
 }
예제 #11
0
 public AccessTokenProvider(IHeaderProvider headerProvider, IPayloadProvider payloadProvider)
 {
     this._headerProvider  = headerProvider;
     this._payloadProvider = payloadProvider;
 }
 public RestRequestFactory(IHeaderProvider headerProvider = null)
 {
     _headerProvider = headerProvider;
 }
예제 #13
0
 public async Task <IAuth0UserProfile> GetTokenInfo(IHeaderProvider headerProvider)
 {
     return(await this.GetTokenInfo(GetIdToken(headerProvider)));
 }
예제 #14
0
 public RestRequestFactory(IHeaderProvider headerProvider = null)
 {
     _headerProvider = headerProvider;
 }
예제 #15
0
 public WebServiceClient(IHeaderProvider provider)
 {
     this.provider = provider;
 }
 public JsonTransportHeaders(IHeaderProvider provider)
 {
     _provider = provider ?? throw new ArgumentNullException(nameof(provider));
 }