Пример #1
0
 public GogoKitConfiguration()
 {
     _halKitConfiguration = new HalKitConfiguration(Default.ViagogoApiRootEndpoints[ApiEnvironment.Production])
     {
         CaptureSynchronizationContext = false
     };
     ViagogoApiEnvironment = ApiEnvironment.Production;
 }
Пример #2
0
            public void ShouldReturnTheGivenConfiguration()
            {
                var expectedConfig = new HalKitConfiguration(new Uri("http://foo.api.com"));
                var connection     = CreateConnection(config: expectedConfig);

                var actualConfig = connection.Configuration;

                Assert.Same(expectedConfig, actualConfig);
            }
Пример #3
0
            public void ShouldReturnTheGivenConfiguration()
            {
                var expectedConfig = new HalKitConfiguration(new Uri("http://foo.api.io"));
                var client         = CreateClient(config: expectedConfig);

                var actualConfig = client.Configuration;

                Assert.Same(expectedConfig, actualConfig);
            }
Пример #4
0
        public HalKit.Http.HttpConnection Build()
        {
            DelegatingHandler authenticationHandler;

            switch (_connectionType)
            {
            case ConnectionType.OAuth:
            {
                authenticationHandler = new BasicAuthenticationHandler(_configuration.ClientId, _configuration.ClientSecret);
                break;
            }

            case ConnectionType.Api:
            {
                var oauthConnection = OAuthConnection(_configuration, _product, _serializer)
                                      .LocalizationProvider(_localizationProvider)
                                      .HttpClientHandler(_httpClientHandler)
                                      .AdditionalHandlers(_additionalHandlers)
                                      .Build();
                var oauthClient = new OAuth2Client(oauthConnection, _configuration);
                authenticationHandler = new BearerTokenAuthenticationHandler(oauthClient, _tokenStore, _configuration);
                break;
            }

            default:
            {
                throw new ArgumentOutOfRangeException("_connectionType");
            }
            }

            var halKitConfiguration = new HalKitConfiguration(_configuration.ViagogoApiRootEndpoint)
            {
                CaptureSynchronizationContext = _configuration.CaptureSynchronizationContext
            };

            var responseFactory = new HalKit.Http.ApiResponseFactory(_serializer, halKitConfiguration);

            // IMPORTANT: The order of these handlers is significant!
            var handlers = new List <DelegatingHandler>
            {
                new ErrorHandler(responseFactory, _configuration, _serializer),
                new UserAgentHandler(_product),
                authenticationHandler,
                new LocalizationHandler(_localizationProvider)
            };

            handlers.AddRange(_additionalHandlers ?? new DelegatingHandler[] { });

            return(new HalKit.Http.HttpConnection(
                       handlers,
                       halKitConfiguration,
                       new HalKit.Http.HttpClientFactory(_httpClientHandler),
                       _serializer,
                       responseFactory));
        }
Пример #5
0
        public GogoKitConfiguration(string clientId, string clientSecret)
        {
            Requires.ArgumentNotNullOrEmpty(clientId, nameof(clientId));
            Requires.ArgumentNotNullOrEmpty(clientSecret, nameof(clientSecret));

            ClientId             = clientId;
            ClientSecret         = clientSecret;
            _halKitConfiguration = new HalKitConfiguration(Default.ViagogoApiRootEndpoints[ApiEnvironment.Production])
            {
                CaptureSynchronizationContext = false
            };
            ViagogoApiEnvironment = ApiEnvironment.Production;
        }
Пример #6
0
        public ViagogoClient(
            ProductHeaderValue product,
            IGogoKitConfiguration configuration,
            IOAuth2TokenStore tokenStore,
            IJsonSerializer serializer,
            IHttpConnection oauthConnection,
            IHttpConnection apiConnection)
        {
            Requires.ArgumentNotNull(product, nameof(product));
            Requires.ArgumentNotNull(configuration, nameof(configuration));
            Requires.ArgumentNotNull(tokenStore, nameof(tokenStore));
            Requires.ArgumentNotNull(serializer, nameof(serializer));
            Requires.ArgumentNotNull(oauthConnection, nameof(oauthConnection));
            Requires.ArgumentNotNull(apiConnection, nameof(apiConnection));

            var halKitConfiguration = new HalKitConfiguration(configuration.ViagogoApiRootEndpoint)
            {
                CaptureSynchronizationContext = configuration.CaptureSynchronizationContext
            };

            Configuration = configuration;
            TokenStore    = tokenStore;
            Hypermedia    = new HalClient(halKitConfiguration, apiConnection);
            var linkFactory = new LinkFactory(configuration);

            OAuth2         = new OAuth2Client(oauthConnection, configuration);
            User           = new UserClient(Hypermedia);
            Search         = new SearchClient(Hypermedia);
            Addresses      = new AddressesClient(User, Hypermedia, linkFactory);
            Purchases      = new PurchasesClient(User, Hypermedia, linkFactory);
            Sales          = new SalesClient(Hypermedia, linkFactory);
            Shipments      = new ShipmentsClient(Hypermedia, linkFactory);
            PaymentMethods = new PaymentMethodsClient(User, Hypermedia, linkFactory);
            Countries      = new CountriesClient(Hypermedia, linkFactory);
            Currencies     = new CurrenciesClient(Hypermedia, linkFactory);
            Categories     = new CategoriesClient(Hypermedia, linkFactory);
            Events         = new EventsClient(Hypermedia);
            Listings       = new ListingsClient(Hypermedia);
            Venues         = new VenuesClient(Hypermedia);
            SellerListings = new SellerListingsClient(Hypermedia, linkFactory);
            Webhooks       = new WebhooksClient(Hypermedia, linkFactory);

            BatchClient = new BatchClient(apiConnection,
                                          new ApiResponseFactory(serializer, halKitConfiguration),
                                          serializer,
                                          new LinkResolver());
        }