public static IServiceCollection AddLearnerService(this IServiceCollection serviceCollection)
        {
            serviceCollection.AddTransient <ILearnerService>(s =>
            {
                var settings = s.GetService <IOptions <MatchedLearnerApi> >().Value;

                var clientBuilder = new HttpClientBuilder()
                                    .WithDefaultHeaders()
                                    .WithLogging(s.GetService <ILoggerFactory>());

                if (!string.IsNullOrEmpty(settings.Identifier))
                {
                    clientBuilder.WithManagedIdentityAuthorisationHeader(new ManagedIdentityTokenGenerator(settings));
                }

                var client = clientBuilder.Build();

                if (!settings.ApiBaseUrl.EndsWith("/"))
                {
                    settings.ApiBaseUrl += "/";
                }

                client.BaseAddress = new Uri(settings.ApiBaseUrl);

                return(new LearnerService(client, settings.Version));
            });

            return(serviceCollection);
        }
예제 #2
0
        public async Task get_all_capabilities_return_expected_list_with_only_v2()
        {
            using (var builder = new HttpClientBuilder())
            {
                var capNewWithoutContext = new CapabilityBuilder().Build();
                var ctx = new ContextBuilder().WithAccountId(null).WithRoleArn(null).WithRoleEmail(null).Build();
                var capNewWithContext          = new CapabilityBuilder().WithContexts(ctx).Build();
                var populatedContext           = new ContextBuilder().Build();
                var capNewWithPopulatedContext = new CapabilityBuilder().WithContexts(populatedContext).Build();

                Capability[] stubCapabilities = new[] { capNewWithContext, capNewWithoutContext, capNewWithPopulatedContext };
                var          client           = builder
                                                .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: stubCapabilities))
                                                .Build();

                var request = new HttpRequestMessage(HttpMethod.Get, "api/v1/adsync");
                request.Headers.Authorization = BasicAuthCredentials.BASIC_AUTHENTICATION_HEADER_VALUE;
                var response = await client.SendAsync(request);

                var content = await response.Content.ReadAsStringAsync();

                Assert.Equal(
                    expected: $"{{\"items\":[{{\"identifier\":\"foo-582a4\",\"members\":[],\"isV1\":false,\"awsAccountId\":\"222222222222\",\"awsRoleArn\":\"arn:aws:iam::528563840976:role/aws-elasticbeanstalk-ec2-role\"}}]}}",
                    actual: content);
            }
        }
        private static IServiceCollection AddBusinessCentralClient <T>(this IServiceCollection serviceCollection, Func <HttpClient, IServiceProvider, string, int, bool, T> instance) where T : class
        {
            serviceCollection.AddTransient(s =>
            {
                var settings = s.GetService <IOptions <BusinessCentralApiClient> >().Value;

                var clientBuilder = new HttpClientBuilder()
                                    .WithDefaultHeaders()
                                    .WithApimAuthorisationHeader(settings)
                                    .WithLogging(s.GetService <ILoggerFactory>())
                                    .WithHandler(new TransientRetryHandler(p => p.RetryAsync(3)));

                var httpClient = clientBuilder.Build();

                if (!settings.ApiBaseUrl.EndsWith("/"))
                {
                    settings.ApiBaseUrl += "/";
                }
                httpClient.BaseAddress = new Uri(settings.ApiBaseUrl);

                return(instance.Invoke(httpClient, s, settings.ApiVersion, settings.PaymentRequestsLimit, settings.ObfuscateSensitiveData));
            });

            return(serviceCollection);
        }
예제 #4
0
 public HttpClientBuilderTests()
 {
     _cacheHandlers = new Mock <IHttpClientCache>();
     _logger        = new Mock <IOcelotLogger>();
     _factory       = new Mock <IDelegatingHandlerHandlerFactory>();
     _builder       = new HttpClientBuilder(_factory.Object, _cacheHandlers.Object, _logger.Object);
 }
예제 #5
0
        public async Task Will_Handle_CapabilityRegisteredEvent()
        {
            //Arrange
            using var builder = new HttpClientBuilder();

            var teamCreatedEventHandlerStub = new TeamCreatedEventHandlerStub();
            var domEventRegistration        = new DomainEventRegistration
            {
                EventTypeName = "capability_registered",
                EventType     = typeof(CapabilityRegisteredDomainEvent),
                Topic         = "foo"
            };

            using var client = builder
                               .WithService <IEventHandler>(teamCreatedEventHandlerStub)
                               .WithService(domEventRegistration)
                               .Build();

            //Act
            var input = @"{
                                    ""eventName"": ""capability_registered"",
                                    ""version"": ""1"",
                                    ""payload"": {
                                        ""capabilityName"": ""ADFS-ViewOnly"",
                                        ""roleArn"": ""arn:aws:iam::738063116313:role/ADFS-ViewOnly""
                                    }
                                }";

            var content  = new JsonContent(input);
            var response = await client.PostAsync("/api/events", content);

            //Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.True(teamCreatedEventHandlerStub.HandleAsyncGotCalled);
        }
예제 #6
0
        public static IServiceCollection AddHttpClient(this IServiceCollection servicecollection, Action <IHttpClientBuilder> action = null)
        {
            servicecollection.AddChainOfResponsability(c =>
            {
                var builder = new HttpClientBuilder(c);

                builder.Add <TracingMiddleware>();

                builder.Add <MemoryCacheMiddleware>();

                builder.Add <TokenAuthenticatorMiddleware>();

                builder.Add <HttpMiddelware>();

                builder.Add <BasicHttpAuthenticatorMiddleware>();

                if (action != null)
                {
                    action(builder);
                }
            });

            servicecollection.TryAddSingleton <IHttpFluentHandler, HttpFluentHandler>();

            servicecollection.TryAddSingleton <IHttpHandler, HttpHandler>();

            return(servicecollection);
        }
        private static IServiceCollection AddClient <T>(
            this IServiceCollection serviceCollection,
            Func <HttpClient, IServiceProvider, T> instance) where T : class
        {
            serviceCollection.AddTransient(s =>
            {
                var settings = s.GetService <IOptions <EmployerIncentivesApiOptions> >().Value;

                var clientBuilder = new HttpClientBuilder()
                                    .WithDefaultHeaders()
                                    .WithApimAuthorisationHeader(settings)
                                    .WithLogging(s.GetService <ILoggerFactory>());

                var httpClient = clientBuilder.Build();

                if (!settings.ApiBaseUrl.EndsWith("/"))
                {
                    settings.ApiBaseUrl += "/";
                }
                httpClient.BaseAddress = new Uri(settings.ApiBaseUrl);

                return(instance.Invoke(httpClient, s));
            });

            return(serviceCollection);
        }
예제 #8
0
        private Browser GetBrowser(string radioName, string radioUrl, IParser parser)
        {
            var configuration = ScrapperConfigurationBuilder.Create()
                                .AddScrapper(radioName, radioUrl)
                                .Build();

            var httpClient = HttpClientBuilder
                             .Create()
                             .WithGetAsync(radioUrl, FileLoader.Get($"Ressources.{radioName}.message.json"))
                             .Build();

            var parsers = new[] { parser };

            return(new Browser(cfg =>
            {
                cfg.Module <ScrapperModule>();
                cfg.Dependency(configuration);
                cfg.Dependency(httpClient);
                cfg.Dependency <IScrapper>(typeof(RadioScrapper));
                cfg.Dependency <IEnumerable <IParser> >(parsers);
                cfg.RequestStartup((container, pipelines, context) => {
                    ErrorHandler.Enable(pipelines, container.Resolve <IResponseNegotiator>());
                });
                cfg.ResponseProcessors(new[] { typeof(JsonProcessor) });
                cfg.StatusCodeHandlers(new[] { typeof(StatusCodeHandler404), typeof(StatusCodeHandler500) });
            }));
        }
        public async Task <T> Execute <T>(HttpClientBuilder builder)
        {
            var result = await builder.Build().SendAsync(builder.HttpRequest);

            var v = await result.Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject <T>(v));
        }
예제 #10
0
        //GET: ForgotPassword/resetPassword
        public ActionResult resetPassword(string token)
        {
            HttpClient          httpClient = HttpClientBuilder.Get();
            HttpResponseMessage response   = httpClient.GetAsync("forgotpssd/reset_password").Result;

            response.EnsureSuccessStatusCode();
            return(View());
        }
예제 #11
0
 private HttpClient CreateHttpClient(bool allowsAutoRedirect = true)
 {
     return(HttpClientBuilder.Create(allowsAutoRedirect)
            .WithBasicAuthenticationFrom(_connectionConfig)
            .AcceptJson()
            .AcceptOctetStream()
            .Build());
 }
예제 #12
0
        public ActionResult resetPassword(ResetPassword resetPassword)
        {
            HttpClient httpClient = HttpClientBuilder.Get();

            HttpResponseMessage response = httpClient.PostAsJsonAsync <ResetPassword>("forgotpssd/reset_password", resetPassword).Result;

            return(View());
        }
예제 #13
0
 public async Task Should_Accept_Defined_Http_Status(int statusCode)
 {
     var response = await HttpClientBuilder.Create(BASE_URL)
                    .Path("status").Path(statusCode)
                    .AsyncGet()
                    .AcceptStatusCodes(statusCode)
                    .GetResponse();
 }
        public HttpClientBuilderTests()
        {
            var messageHandlerBuilder = Substitute.For <HttpMessageHandlerBuilder>();

            messageHandlerBuilder.Build().Returns(Substitute.For <HttpMessageHandler>());

            _clientBuilder = new HttpClientBuilder(messageHandlerBuilder);
        }
예제 #15
0
 public HttpClient(HttpClientBuilder builder)
 {
     _host                 = builder.Host;
     _keepAlive            = builder.KeepAlive;
     _sender               = builder.Sender ?? new HttpSenderAsync(_host, builder.Decoders);
     Timeout               = builder.Timeout;
     _requestPreprocessor  = builder.RequestMiddleware;
     _responsePreprocessor = builder.ResponseMiddleware;
 }
예제 #16
0
        /// <inheritdoc cref="IProxyResponseBuilder.WithProxy(IProxyAndRecordSettings)"/>
        public IResponseBuilder WithProxy(IProxyAndRecordSettings settings)
        {
            Check.NotNull(settings, nameof(settings));

            ProxyAndRecordSettings = settings;

            _httpClientForProxy = HttpClientBuilder.Build(settings);
            return(this);
        }
예제 #17
0
 private static void InitializeAfterRegenerateWebsiteService()
 {
     AfterRegenerateWebSiteHttpBuilder = new HttpClientBuilder(() => new AuthenticationConfiguration
     {
         ApiKey = RegenerateApiKeyApiResult.Value.MerchantSite.ApiKey, SiteId = RegenerateApiKeyApiResult.Value.MerchantSite.SiteID
     });
     AfterRegenerateWebsiteHttpClient = AfterRegenerateWebSiteHttpBuilder.Build();
     AfterRegenerateManagementService = new Sdk.Services.WebsiteManagementService(AfterRegenerateWebsiteHttpClient, BaseAddress);
 }
예제 #18
0
        public void SetUp()
        {
            var httpClient = new HttpClientBuilder()
                             .WithGetAlbumDetailsSuccessfulResponse()
                             .Build();
            var builder = TestWebHostBuilder.BuildTestWebHostForStartUp <Startup>(httpClient);

            _testServer = new TestServer(builder);
        }
예제 #19
0
 /// <summary>
 /// ユーザーの投稿動画の情報をセットします。
 /// </summary>
 /// <returns></returns>
 public async Task SetUserVideoInfo()
 {
     using (var client = HttpClientBuilder.NewHttpClient())
     {
         var httpUserVideo = await new HttpUserVideoInfoBuilder().Build(userId, client);
         videoSamune = httpUserVideo.GetVideoSamune();
         videoTitle  = httpUserVideo.GetVideoTitle();
         videoURL    = httpUserVideo.GetVideoURL();
     }
 }
예제 #20
0
        private async static Task <string[]> GetMylistId(string userId)
        {
            using (var client = HttpClientBuilder.NewHttpClient())
            {
                var response = await client.GetAsync(ApiURL.GET_USER_MYLIST(userId));

                string[] mylistInfo = XmlParse.ParseMylistXml(await response.Content.ReadAsStringAsync());
                return(mylistInfo);
            }
        }
        public async Task AddPayment(PaymentModel paymentModel)
        {
            var clientBuilder = new HttpClientBuilder()
                                .AsPost()
                                .WithBaseRoute(BaseRoute)
                                .WithBody <PaymentModel>(paymentModel)
                                .WithRoute(Routes.Payment.POST_Payment);

            await Execute(clientBuilder);
        }
        public RestClientFactoryConfig(IHttpClientBuilder httpClientBuilder)
        {
            HttpClientBuilder  = httpClientBuilder ?? throw new ArgumentNullException(nameof(httpClientBuilder));
            UseDefaultHandlers = true;

            HttpClientBuilder.AddHttpMessageHandler(() => new DefaultJsonHandler(new Config
            {
                UseDefaultHandlers = UseDefaultHandlers
            }));
        }
        public async Task <PaymentModel> GetOrderItem(Guid id)
        {
            var clientBuilder = new HttpClientBuilder()
                                .AsGET()
                                .WithBaseRoute(BaseRoute)
                                .WithUriSehment("id", id)
                                .WithRoute(Routes.Payment.GET_Payment);

            return(await Execute <PaymentModel>(clientBuilder));
        }
예제 #24
0
        public async Task SuccessFlow()
        {
            var correlationId = Guid.NewGuid().ToString();

            ContextResolver.SetContext(new CorrelationContext(correlationId));

            var innerHandler = setupMockHandler(validateHeader);
            var client       = HttpClientBuilder.CreateClient(innerHandler.Object, new[] { new CorrelationContextInjector() });
            await client.GetAsync("http://bing.com");
        }
예제 #25
0
        /// <inheritdoc />
        public IRemoteService <T> Create <T>(string baseUrl)
        {
            if (string.IsNullOrEmpty(baseUrl))
            {
                throw new ArgumentNullException(nameof(baseUrl), "Parameter can't be null or empty.");
            }

            var httpClient = new HttpClientBuilder().WithBaseUrl(baseUrl).Build();

            return(Create <T>(httpClient));
        }
예제 #26
0
        public async Task NoInjectors()
        {
            var correlationId = Guid.NewGuid().ToString();

            ContextResolver.SetContext(correlationId);

            var innerHandler = setupMockHandler(validateNoHeader);
            var client       = HttpClientBuilder.CreateClient(innerHandler.Object, new List <IContextInjector <string, HttpRequestMessage> >());

            await client.GetAsync("http://bing.com");
        }
예제 #27
0
        public async Task Should_Request_And_Deserialize_Model_With_Guid()
        {
            var model =
                await HttpClientBuilder.Create(BASE_URL)
                .Path("uuid")
                .AsyncGet()
                .GetEntity <ModelWithGuid>();

            Assert.NotNull(model);
            Assert.NotEqual(Guid.Empty, model.Uuid);
        }
        private HttpClient CreateHttpClient()
        {
            var httpClient = new HttpClientBuilder()
                             .WithDefaultHeaders()
                             .WithBearerAuthorisationHeader(new AzureADBearerTokenGenerator(_config))
                             .Build();

            httpClient.BaseAddress = new Uri(_config.ApiBaseUrl);

            return(httpClient);
        }
        private static HttpClient CreateHttpClient(ProviderRelationshipApiConfiguration configuration)
        {
            var httpClient = new HttpClientBuilder()
                             .WithDefaultHeaders()
                             .WithBearerAuthorisationHeader(new AzureADBearerTokenGenerator(configuration))
                             .Build();

            httpClient.BaseAddress = new Uri(configuration.ApiBaseUrl);

            return(httpClient);
        }
예제 #30
0
 /// <summary>Initializes a new instance of the <see cref="UserService" /> class.</summary>
 /// <param name="jwtUtil">The JWT utility.</param>
 /// <param name="vaultUtil">The vault utility.</param>
 /// <param name="client">The client.</param>
 /// <param name="fileUtil">The file utility.</param>
 public UserService(
     JwtUtil jwtUtil,
     VaultUtil vaultUtil,
     HttpClientBuilder client,
     FileUtil fileUtil
     )
 {
     settings      = vaultUtil.decrypt <Settings>();
     this.jwtUtil  = jwtUtil;
     this.client   = client;
     this.fileUtil = fileUtil;
 }