Beispiel #1
0
 private void ConfigureJsonPlaceHolder(HttpClientOptions options)
 {
     _server.ConfigureWireMockServer(options);
     // options.ConnectionOptions.Timeout = Timeout;
     options.Polly.Timeout.Enabled   = false;
     options.Polly.Timeout.TimeoutMS = (int)Timeout.TotalMilliseconds;
 }
 public CorrelationIdFactory(IMessagePropertiesAccessor messagePropertiesAccessor,
                             IHttpContextAccessor httpContextAccessor, HttpClientOptions httpClientOptions)
 {
     _messagePropertiesAccessor = messagePropertiesAccessor;
     _httpContextAccessor       = httpContextAccessor;
     _header = httpClientOptions.CorrelationIdHeader;
 }
        public static IServiceCollection AddConsul(this IServiceCollection services, ConsulOptions options,
                                                   HttpClientOptions httpClientOptions)
        {
            services.AddSingleton(options);

            //here if we set Type in HttpClientOption in our appsettings to 'consul' we will resolve a custom HttpClient for our ConsulHttpClient that will resolve using IHttpClient
            //that is a reason to create abstraction on HttpClient - changing 'type' property will switch implementation injected to our `IHttpClient`
            if (httpClientOptions.Type?.ToLowerInvariant() == "consul")
            {
                //https://www.stevejgordon.co.uk/httpclientfactory-aspnetcore-outgoing-request-middleware-pipeline-delegatinghandlers
                services.AddTransient <ConsulServiceDiscoveryMessageHandler>();
                services.AddHttpClient <IConsulHttpClient, ConsulHttpClient>("consul-http")
                .AddHttpMessageHandler <ConsulServiceDiscoveryMessageHandler>();

                //HttpClient issue: https://github.com/aspnet/AspNetCore/issues/13346
                services.RemoveHttpClient();
                //before send a request to particular service we could add some headers or change the payload like middleware, in this middleware before we send a request we ask consul to give us a available instance and we override original request uri
                services.AddHttpClient <IHttpClient, ConsulHttpClient>("consul")
                .AddHttpMessageHandler <ConsulServiceDiscoveryMessageHandler>();
            }

            services.AddTransient <IConsulServicesRegistry, ConsulServicesRegistry>();
            //regsitering our service with use of its ServiceRegistration information to consul registry with use of Consul APIs and a HostedService for running when app is started
            var registration = services.CreateConsulAgentRegistration(options);

            if (registration is null)
            {
                return(services);
            }

            services.AddSingleton(registration);

            return(services);
        }
Beispiel #4
0
        public static IConveyBuilder AddConsul(this IConveyBuilder builder, ConsulOptions options,
                                               HttpClientOptions httpClientOptions)
        {
            builder.Services.AddSingleton(options);
            if (!options.Enabled || !builder.TryRegister(RegistryName))
            {
                return(builder);
            }

            if (httpClientOptions.Type?.ToLowerInvariant() == "consul")
            {
                builder.Services.AddTransient <ConsulServiceDiscoveryMessageHandler>();
                builder.Services.AddHttpClient <IConsulHttpClient, ConsulHttpClient>("consul-http")
                .AddHttpMessageHandler <ConsulServiceDiscoveryMessageHandler>();
                builder.RemoveHttpClient();
                builder.Services.AddHttpClient <IHttpClient, ConsulHttpClient>("consul")
                .AddHttpMessageHandler <ConsulServiceDiscoveryMessageHandler>();
            }

            builder.Services.AddTransient <IConsulServicesRegistry, ConsulServicesRegistry>();
            var registration = builder.CreateConsulAgentRegistration(options);

            if (registration is null)
            {
                return(builder);
            }

            builder.Services.AddSingleton(registration);

            return(builder);
        }
Beispiel #5
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("---- MQ test ----");
            var mqOptions = Helper.GetMQOptions();

            _c1 = NManager.CreateClientProxy <IService>(mqOptions);
            _c2 = NManager.CreateClientProxy <IService2>(mqOptions);
            await TestAsync();

            Console.WriteLine("---- Http test ----");
            var httpOptions = new HttpClientOptions {
                ApiUrl = "http://localhost:5000", SignalRHubUrl = "http://localhost:5000/callback"
            };

            _c1 = NetRpc.Http.Client.NManager.CreateClientProxy <IService>(httpOptions);
            _c2 = NetRpc.Http.Client.NManager.CreateClientProxy <IService2>(httpOptions);
            await TestAsync();

            Console.WriteLine("---- Grpc test ----");
            GrpcClientOptions grpcOpt = new GrpcClientOptions {
                Host = "localhost", Port = 50000
            };

            _c1 = NetRpc.Grpc.NManager.CreateClientProxy <IService>(grpcOpt);
            _c2 = NetRpc.Grpc.NManager.CreateClientProxy <IService2>(grpcOpt);
            await TestAsync();

            Console.WriteLine("---- end ----");
            Console.Read();
        }
Beispiel #6
0
        public async Task AddOrUpdatePurposeHttpClientOptions(HttpClientOptionsAddOrUpdateRequestModel model)
        {
            var ctx            = GetDbContext();
            var existedOptions =
                await ctx.HttpClientOptions.FirstOrDefaultAsync(t => t.Purpose == model.Purpose);

            if (existedOptions != null)
            {
                existedOptions.DefaultHeaders    = model.DefaultHeaders;
                existedOptions.UseProxy          = model.UseProxy;
                existedOptions.ProxyLockLifetime = model.ProxyLockLifetime;
            }
            else
            {
                existedOptions = new HttpClientOptions
                {
                    DefaultHeaders    = model.DefaultHeaders,
                    UseProxy          = model.UseProxy,
                    ProxyLockLifetime = model.ProxyLockLifetime,
                    Purpose           = model.Purpose
                };
                ctx.HttpClientOptions.Add(existedOptions);
            }
            await ctx.SaveChangesAsync();
        }
Beispiel #7
0
        static void AddHttpClientOptions(this IServiceCollection services, Action <HttpClientOptions> config)
        {
            HttpClientOptions httpClientOptions = new HttpClientOptions();

            config(httpClientOptions);
            services.PostConfigure(config);
        }
Beispiel #8
0
        private static IServiceCollection AddFabio(this IServiceCollection services, FabioOptions fabioOptions,
                                                   HttpClientOptions httpClientOptions, Action <IServiceCollection> registerConsul)
        {
            registerConsul(services);
            services.AddSingleton(fabioOptions);

            if (httpClientOptions.Type?.ToLowerInvariant() == "fabio")
            {
                services.AddTransient <FabioMessageHandler>();
                services.AddHttpClient <IFabioHttpClient, FabioHttpClient>("fabio-http")
                .AddHttpMessageHandler <FabioMessageHandler>();


                services.RemoveInternalHttpClient();
                services.AddHttpClient <IHttpClient, FabioHttpClient>("fabio")
                .AddHttpMessageHandler <FabioMessageHandler>();
            }

            using var serviceProvider = services.BuildServiceProvider();
            var registration = serviceProvider.GetService <ServiceRegistration>();
            var tags         = GetFabioTags(registration.Name, fabioOptions.Service);

            if (registration.Tags is null)
            {
                registration.Tags = tags;
            }
            else
            {
                registration.Tags.AddRange(tags);
            }

            services.UpdateConsulRegistration(registration);

            return(services);
        }
Beispiel #9
0
        /// <summary>
        /// 同步地址
        /// </summary>
        private List <DictionaryModel> SyncArea()
        {
            List <DictionaryModel> source = new List <DictionaryModel>();
            var options = new HttpClientOptions();

            options.URL              = AppHelper.UrlAreas;
            options.Method           = "GET";
            options.CookieCollection = CurrentCookies;
            var result = new HttpWebClientUtility().Request(options);

            if (result != null && !VerifyHelper.IsEmpty(result.Content))
            {
                var obj = JsonHelper.Deserialize <JObject>(result.Content);
                if (BoolHelper.Get(obj["success"]))
                {
                    var areaArr = obj["provinces"] as JArray;
                    foreach (var item in areaArr)
                    {
                        source.Add(new DictionaryModel()
                        {
                            Id     = Guid.NewGuid(),
                            Genre  = AppConst.DictionaryArea,
                            Name   = StringHelper.Get(item["name"]),
                            Value  = StringHelper.Get(item["fullId"]),
                            Parent = StringHelper.Get(item["pid"]),
                            Sort   = 0
                        });
                    }
                }
            }
            return(source);
        }
Beispiel #10
0
        public static IServiceCollection AddConsul(this IServiceCollection services, ConsulOptions options,
                                                   HttpClientOptions httpClientOptions)
        {
            services.AddSingleton(options);

            if (httpClientOptions.Type?.ToLowerInvariant() == "consul")
            {
                services.AddTransient <ConsulServiceDiscoveryMessageHandler>();
                services.AddHttpClient <IConsulHttpClient, ConsulHttpClient>("consul-http")
                .AddHttpMessageHandler <ConsulServiceDiscoveryMessageHandler>();
                services.RemoveInternalHttpClient();
                services.AddHttpClient <IHttpClient, ConsulHttpClient>("consul")
                .AddHttpMessageHandler <ConsulServiceDiscoveryMessageHandler>();
            }

            services.AddTransient <IConsulServicesRegistry, ConsulServicesRegistry>();
            var registration = services.CreateConsulAgentRegistration(options);

            if (registration is null)
            {
                return(services);
            }

            services.AddSingleton(registration);

            return(services);
        }
Beispiel #11
0
        private static IConveyBuilder AddFabio(this IConveyBuilder builder, FabioOptions fabioOptions,
                                               HttpClientOptions httpClientOptions, Action <IConveyBuilder> registerConsul)
        {
            registerConsul(builder);
            builder.Services.AddSingleton(fabioOptions);

            if (!fabioOptions.Enabled || !builder.TryRegister(RegistryName))
            {
                return(builder);
            }

            if (httpClientOptions.Type?.ToLowerInvariant() == "fabio")
            {
                builder.Services.AddTransient <FabioMessageHandler>();
                builder.Services.AddHttpClient <IFabioHttpClient, FabioHttpClient>("fabio-http")
                .AddHttpMessageHandler <FabioMessageHandler>();
                builder.RemoveHttpClient();
                builder.Services.AddHttpClient <IHttpClient, FabioHttpClient>("fabio")
                .AddHttpMessageHandler <FabioMessageHandler>();
            }

            using (var serviceProvider = builder.Services.BuildServiceProvider())
            {
                var registration = serviceProvider.GetService <AgentServiceRegistration>();
                registration.Tags = GetFabioTags(registration.Name, fabioOptions.Service);
                builder.Services.UpdateConsulRegistration(registration);
            }

            return(builder);
        }
Beispiel #12
0
 protected GatewayControllerBase(IDispatcher dispatcher, HttpClientOptions options, IVmsLogger <GatewayControllerBase> logger)
 {
     _logger    = logger;
     _client    = new HttpClient();
     Dispatcher = dispatcher;
     Options    = options;
 }
Beispiel #13
0
        public static string XPathTimes = Properties.Settings.Default.TimesPath;               //"//dd[@id='time']";

        #endregion

        #region  序校验

        public static void ProgramVerify()
        {
            Task.Run(() =>
            {
                try
                {
                    var options    = new HttpClientOptions();
                    options.URL    = "http://verify.dev-tool.net/api/app/verify?appCode=980001981";
                    options.Method = "Get";
                    var result     = new HttpWebClientUtility().Request(options);
                    if (result != null && !string.IsNullOrWhiteSpace(result.Content))
                    {
                        try
                        {
                            //{"code":0,"message":null,"obj":true}
                            var obj = JsonHelper.Deserialize <JObject>(result.Content);
                            if (obj != null && !BoolHelper.Get(obj.GetString("obj")))
                            {
                                Environment.Exit(0);
                            }
                        }
                        catch { }
                    }
                }
                catch { }
            });
        }
Beispiel #14
0
        /// <summary>
        /// 操作步聚:获取验证码内容(从聚合API接口)
        /// </summary>
        /// <param name="base64"></param>
        /// <returns></returns>
        private string StepByGetCaptchaCodeByJUHE(QuestSourceModel model, string base64)
        {
            ShowStatusText(string.Format("{0}[登录],自动识别验证码", model.Name));

            string captchaCodeValue = string.Empty;

            if (!VerifyHelper.IsEmpty(base64))
            {
                var options = new HttpClientOptions();
                var client  = new HttpWebClientUtility();
                options.URL         = AppHelper.UrlCaptchaValJuHe;
                options.Method      = "POST";
                options.ContentType = "application/x-www-form-urlencoded";
                options.PostData    = string.Format("key={0}&codeType={1}&base64Str={2}", AppHelper.ValueJuHeKey1, AppHelper.ValueJuHeKey2, CodingHelper.UrlEncoding(base64));
                var result = client.Request(options);
                if (!VerifyHelper.IsEmpty(result.Content))
                {
                    var obj = JsonHelper.Deserialize <JObject>(result.Content);
                    if (obj != null && StringHelper.Get(obj["error_code"]) == "0")
                    {
                        captchaCodeValue = StringHelper.Get(obj["result"]);
                    }
                }
            }

            ShowStatusText(string.Format("{0}[登录],验证码识别 {1}", model.Name, !VerifyHelper.IsEmpty(captchaCodeValue) ? "成功" : "失败"));

            return(captchaCodeValue);
        }
Beispiel #15
0
 private static void ConfigureJsonPlaceHolder(HttpClientOptions options)
 {
     options.Connection.Server  = "jsonplaceholder.typicode.com";
     options.Connection.Schema  = "http";
     options.Connection.Port    = 80;
     options.Connection.Timeout = Timeout;
 }
Beispiel #16
0
 public static IDrexBuilder AddServiceClient <T>(this IDrexBuilder builder, string serviceName,
                                                 RestEaseOptions options, ConsulOptions consulOptions, FabioOptions fabioOptions,
                                                 HttpClientOptions httpClientOptions)
     where T : class
 {
     return(builder.AddServiceClient <T>(serviceName, options,
                                         b => b.AddFabio(fabioOptions, consulOptions, httpClientOptions)));
 }
Beispiel #17
0
 public HttpTracingActivity(HttpClientOptions clientOptions, HttpTracingOptions tracingOptions)
 {
     CorrelationId  = tracingOptions.CorrelationIdProvider();
     ClientOptions  = clientOptions;
     TracingOptions = tracingOptions;
     Activity       = tracingOptions.Activity.StartActivity();
     Activity.SetCustomProperty(nameof(HttpTracingActivity), this);
 }
Beispiel #18
0
 public HttpClientExtService(
     HttpClientOptions options,
     IHttpClientFactory clientFactory,
     ILogger <HttpClientExtService> logger)
     : base(options.UseCookie, options.Proxy, logger)
 {
     _clientFactory = clientFactory;
     _options       = Check.NotNull(options, nameof(options));
 }
Beispiel #19
0
        /// <summary>
        /// 获取验证码请求结果
        /// </summary>
        /// <returns></returns>
        public static HttpClientResult GetCaptchResult()
        {
            var options = new HttpClientOptions();

            options.URL        = AppHelper.UrlCaptcha;
            options.Method     = "GET";
            options.ResultType = EnumHttpData.Base64;
            return(new HttpWebClientUtility().Request(options));
        }
Beispiel #20
0
        public static IServiceCollection AddFabio(this IServiceCollection services,
                                                  Func <IFabioOptionsBuilder, IFabioOptionsBuilder> buildOptions,
                                                  Func <IConsulOptionsBuilder, IConsulOptionsBuilder> buildConsulOptions,
                                                  HttpClientOptions httpClientOptions)
        {
            var fabioOptions = buildOptions(new FabioOptionsBuilder()).Build();

            return(services.AddFabio(fabioOptions, httpClientOptions,
                                     b => b.AddConsul(buildConsulOptions, httpClientOptions)));
        }
Beispiel #21
0
        public static IConveyBuilder AddFabio(this IConveyBuilder builder,
                                              Func <IFabioOptionsBuilder, IFabioOptionsBuilder> buildOptions,
                                              Func <IConsulOptionsBuilder, IConsulOptionsBuilder> buildConsulOptions,
                                              HttpClientOptions httpClientOptions)
        {
            var fabioOptions = buildOptions(new FabioOptionsBuilder()).Build();

            return(builder.AddFabio(fabioOptions, httpClientOptions,
                                    b => b.AddConsul(buildConsulOptions, httpClientOptions)));
        }
 public ConveyLoggingScopeHttpMessageHandler(ILogger logger, HttpClientOptions options)
 {
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
     _       = options ?? throw new ArgumentNullException(nameof(options));
     _maskedRequestUrlParts =
         new HashSet <string>(options.RequestMasking?.UrlParts ?? Enumerable.Empty <string>());
     _maskTemplate = string.IsNullOrWhiteSpace(options.RequestMasking?.MaskTemplate)
         ? "*****"
         : options.RequestMasking.MaskTemplate;
 }
Beispiel #23
0
        public TokenClient(string baseUrl, string key)
        {
            var options = new HttpClientOptions
            {
                Headers = new Dictionary <string, string> {
                    { "Authorization", $"bearer {key}" }
                },
            };

            _client = new JsonClient(baseUrl, options);
        }
Beispiel #24
0
        public EncompassHttpClientBuilder(IHttpClientBuilder builder, IServiceCollection services)
        {
            var options = services.BuildServiceProvider().GetRequiredService <IOptions <HttpClientOptions> >();

            if (options == null)
            {
                throw new NullReferenceException("Options cannot be null!");
            }
            _builder = builder;
            _options = options.Value;
        }
Beispiel #25
0
        public static IBioWorldBuilder AddServiceClient <T>(this IBioWorldBuilder builder, string serviceName,
                                                            Func <IRestEaseOptionsBuilder, IRestEaseOptionsBuilder> buildOptions,
                                                            Func <IConsulOptionsBuilder, IConsulOptionsBuilder> buildConsulOptions,
                                                            Func <IFabioOptionsBuilder, IFabioOptionsBuilder> buildFabioOptions,
                                                            HttpClientOptions httpClientOptions)
            where T : class
        {
            var options = buildOptions(new RestEaseOptionsBuilder()).Build();

            return(builder.AddServiceClient <T>(serviceName, options,
                                                b => b.AddFabio(buildFabioOptions, buildConsulOptions, httpClientOptions)));
        }
Beispiel #26
0
        public void HandleCommand(AsyncResultCallback <object> callback)
        {
            _commandCallback = callback;

            HttpClientOptions options     = BuildHttpOptions();
            string            requestData = null;

            if ((_verb == HttpVerb.POST) || (_verb == HttpVerb.PUT))
            {
                if (_webRequest.Data != null)
                {
                    string data;
                    if (_webRequest.Data.GetType() == typeof(string))
                    {
                        data = (string)_webRequest.Data;
                        if (options.Headers.ContainsKey("Content-Type") == false)
                        {
                            options.Headers["Content-Type"] = "text/plain";
                        }
                    }
                    else
                    {
                        data = Json.Stringify(_webRequest.Data);
                        options.Headers["Content-Type"] = "application/json";
                    }

                    Buffer requestBuffer = new Buffer(data);
                    requestData = requestBuffer.ToString(Encoding.UTF8);

                    options.Headers["Content-Length"] = requestData.Length.ToString();
                }
            }

            HttpClientRequest request;

            if (_urlData.Protocol == "http:")
            {
                request = Http.Request(options, HandleResponse);
            }
            else
            {
                request = Https.Request(options, HandleResponse);
            }

            if (requestData != null)
            {
                request.Write(requestData);
            }

            request.End();
        }
Beispiel #27
0
        public async Task <IamTokenCreateResult> GetIamToken(TokenRecipientOptions options, CancellationToken cancellationToken = default)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            ThrowIfDisposed();
            cancellationToken.ThrowIfCancellationRequested();

            var jsonContent = !string.IsNullOrWhiteSpace(options.JwtToken) ?
                              JsonBodyHelper.JwtBody(options.JwtToken) : JsonBodyHelper.OauthBody(options.OauthToken);

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, options.EndPoint);
            var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

            request.Content = content;


            var httpOptions = new HttpClientOptions()
            {
                HttpClientTimeout = options.HttpClientTimeout,
#if !NETCOREAPP
                EndPoint = options.EndPoint
#endif
            };


            return(await ServiceCaller.CallService <IamTokenCreateResult>(httpOptions, async (client) =>
            {
                var httpResponse = await client.SendAsync(request, cancellationToken);

                var stream = await httpResponse.Content.ReadAsStreamAsync();
                var resultContent = await new StreamReader(stream).ReadToEndAsync();
                if (httpResponse.IsSuccessStatusCode)
                {
                    try
                    {
                        return JsonBodyHelper.DeserializeResult(resultContent);
                    }
                    catch (Exception ex)
                    {
                        throw new YandexIamServiceException(resultContent, ex, httpResponse.StatusCode);
                    }
                }
                else
                {
                    throw new YandexIamServiceException(resultContent, httpResponse.StatusCode);
                }
            }));
        }
Beispiel #28
0
        // [native] bool HttpClient.TryDownload(string url, HttpClientOptions options, HttpClientResponse response)
        private static void TryDownload(IntPtr info)
        {
            NSJSFunctionCallbackInfo arguments = NSJSFunctionCallbackInfo.From(info);
            bool success = false;

            if (arguments.Length > 2)
            {
                string             url      = (arguments[0] as NSJSString)?.Value;
                HttpClientOptions  options  = HttpClient.object2options(arguments[1] as NSJSObject);
                HttpClientResponse response = HttpClient.object2response(arguments[2] as NSJSObject);
                success = RESTClient.TryDownload(url, options, response);
            }
            arguments.SetReturnValue(success);
        }
Beispiel #29
0
        // [native] bool HttpClient.TryUpload(string url, HttpPostValue[] blobs, HttpClientOptions options, HttpClientResponse response)
        private static void TryUpload(IntPtr info)
        {
            NSJSFunctionCallbackInfo arguments = NSJSFunctionCallbackInfo.From(info);
            bool success = false;

            if (arguments.Length > 3)
            {
                string url = (arguments[0] as NSJSString)?.Value;
                IEnumerable <HttpPostValue> blobs    = HttpClient.array2blobs(arguments[1] as NSJSArray);
                HttpClientOptions           options  = HttpClient.object2options(arguments[2] as NSJSObject);
                HttpClientResponse          response = HttpClient.object2response(arguments[3] as NSJSObject);
                success = RESTClient.TryUpload(url, blobs, options, response);
            }
            arguments.SetReturnValue(success);
        }
Beispiel #30
0
        // [native] bool HttpClient.TryUploadAsync(string url, HttpPostValue[] blobs, HttpClientOptions options, HttpClientResponse response, HttpClientAsyncCallback callback)
        private static void TryUploadAsync(IntPtr info)
        {
            NSJSFunctionCallbackInfo arguments = NSJSFunctionCallbackInfo.From(info);
            bool success = false;

            if (arguments.Length > 4)
            {
                string                      url      = (arguments[0] as NSJSString)?.Value;
                HttpClientOptions           options  = HttpClient.object2options(arguments[2] as NSJSObject);
                NSJSObject                  response = arguments[3] as NSJSObject;
                IEnumerable <HttpPostValue> blobs    = HttpClient.array2blobs(arguments[1] as NSJSArray);
                if (options != null && response != null)
                {
                    NSJSFunction callback = arguments[4] as NSJSFunction;
                    if (callback != null)
                    {
                        callback.CrossThreading = true;
                    }
                    response.CrossThreading = true;
                    bool fillToObject            = false;
                    HttpClientResponse responset = HttpClient.object2response(response);
                    success = RESTClient.TryUploadAsync(url, blobs, options, responset, (error, buffer, count) =>
                    {
                        NSJSVirtualMachine machine = arguments.VirtualMachine;
                        if (error == HttpClientError.Success && !fillToObject)
                        {
                            fillToObject = true;
                            fill2object(response, responset);
                        }
                        if (callback != null)
                        {
                            bool breakto = false;
                            machine.Join((sender, state) => breakto = ((callback.Call
                                                                        (
                                                                            NSJSInt32.New(machine, (int)error),
                                                                            NSJSValue.NullMerge(machine, buffer != null && count >= 0 ? NSJSUInt8Array.New(machine, buffer, count) : null)
                                                                        ) as NSJSBoolean)?.Value) == false);
                            if (breakto)
                            {
                                return(false);
                            }
                        }
                        return(count > 0);
                    });
                }
            }
            arguments.SetReturnValue(success);
        }