public void CanProcessRequestOk()
        {
            var refundResponse =
                "{\r\n     \"refundId\": \"S01-5105180-3221187-R022311\",\r\n     \"chargeId\": \"S01-5105180-3221187-C056351\",\r\n     \"refundAmount\": {\r\n         \"amount\": \"14.00\",\r\n         \"currencyCode\": \"USD\"\r\n     },\r\n     \"softDescriptor\": \"Descriptor\",\r\n     \"creationTimestamp\": \"20190714T155300Z\",\r\n     \"statusDetails\": {\r\n         \"state\": \"RefundInitiated\",\r\n         \"reasonCode\": null,\r\n         \"reasonDescription\": null,\r\n         \"lastUpdatedTimestamp\": \"20190714T155300Z\"\r\n     },\r\n     \"releaseEnvironment\": \"Sandbox\"\r\n}";

            var mockTestClient = new Mock <TestClient>(payConfig)
            {
                CallBase = true
            };

            mockTestClient.Protected().As <ITestClientMapping>()
            .Setup(c => c.SendRequest(It.IsAny <ApiRequest>(),
                                      It.IsAny <Dictionary <string, string> >()))
            .Returns((ApiRequest request, Dictionary <string, string> postSignedHeaders) => AssertPreSendRequestFlow(request, postSignedHeaders, HttpStatusCode.OK, refundResponse));

            var testRequest   = new Amazon.Pay.API.InStore.Refund.CreateRefundRequest("123456789", 10, Currency.USD, "referenceID");
            var apiUrlBuilder = new ApiUrlBuilder(payConfig);
            var apiPath       = apiUrlBuilder.BuildFullApiPath(Constants.ApiServices.Default, Constants.Resources.InStore.Refund);
            var apiRequest    = new ApiRequest(apiPath, HttpMethod.POST, testRequest, null);

            var result = mockTestClient.Object.Invoke <RefundResponse>(apiRequest, new Dictionary <string, string>());

            Assert.NotNull(result);
            Assert.AreEqual(refundResponse, result.RawResponse);
            Assert.AreEqual(testRequest.ToJson(), result.RawRequest);
            Assert.AreEqual("S01-5105180-3221187-R022311", result.RefundId);
            Assert.AreEqual(true, result.Success);
            Assert.NotNull(result.RequestId);
            Assert.AreEqual(0, result.Retries);
            Assert.AreEqual(HttpMethod.POST, result.Method);
            Assert.AreEqual(apiPath, result.Url);
            Assert.True(result.Duration > 0);
        }
Beispiel #2
0
        public void AddQuery_ValidInput_AddsQueryToQuerystring()
        {
            var urlBuilder = new ApiUrlBuilder();

            urlBuilder.AppendQuery("key", "1234");

            Assert.Equal("?key=1234", urlBuilder.Query);
        }
Beispiel #3
0
        public void AddQuery_MultipleValidInputs_AddsQueriesToQuerystring()
        {
            var urlBuilder = new ApiUrlBuilder()
                             .AppendQuery("key", "banana")
                             .AppendQuery("cat", "black");

            Assert.Equal("?key=banana&cat=black", urlBuilder.Query);
        }
Beispiel #4
0
        public void SetPath_SingleStringInput_SetsPathCorrectly(string path, string pathResult)
        {
            var url = new ApiUrlBuilder();

            url.AppendPath(path);

            Assert.Equal(pathResult, url.Path);
        }
Beispiel #5
0
        public void SetPath_ParamsStrings_SetsPathCorrectly(string resultPath, params string[] path)
        {
            var url = new ApiUrlBuilder();

            url.AppendPath(path);

            Assert.Equal(resultPath, url.Path);
        }
Beispiel #6
0
        BaseResponse <Post> IPosts.GetAllPosts(PostFilter filters)
        {
            var url = ApiUrlBuilder.Initialize(_apiKey)
                      .ForClient(ClientType.Posts)
                      .WithFilter(filters)
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Post> >().ValidateApiResponse();

            return(response);
        }
Beispiel #7
0
 public Cryptsy()
 {
     ApiUrl       = new ApiUrlBuilder();
     HttpClient   = new System.Net.Http.HttpClient();
     MarketLookup = new Dictionary <CurrencyPair, int>
     {
         { CurrencyPair.DrkBtc, 155 },
         { CurrencyPair.UtcBtc, 163 },
     };
 }
        BaseResponse <Badge> IBadges.GetRecentlyAwardedBadges(BadgeFilters filters)
        {
            var url = ApiUrlBuilder.Initialize(_apiKey)
                      .ForClient(ClientType.Badges, "recipients")
                      .WithFilter(filters)
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Badge> >().ValidateApiResponse();

            return(response);
        }
        BaseResponse <Badge> IBadges.GetNonTaggedBadges(List <string> ids, BadgeFilters filters)
        {
            var url = ApiUrlBuilder.Initialize(_apiKey)
                      .ForClient(ClientType.Badges, "name")
                      .WithFilter(filters)
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Badge> >().ValidateApiResponse();

            return(response);
        }
        BaseResponse <Badge> IBadges.GetAllTaggedBadges(BadgeFilters filters, string inName)
        {
            var url = ApiUrlBuilder.Initialize(_apiKey)
                      .ForClient(ClientType.Badges, "tags")
                      .WithFilter(filters, inName)
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Badge> >().ValidateApiResponse();

            return(response);
        }
Beispiel #11
0
 public Cryptsy()
 {
     ApiUrl = new ApiUrlBuilder();
     HttpClient = new System.Net.Http.HttpClient();
     MarketLookup = new Dictionary<CurrencyPair, int>
     {
         { CurrencyPair.DrkBtc, 155 },
         { CurrencyPair.UtcBtc, 163 },
     };
 }
Beispiel #12
0
        BaseResponse <Post> IPosts.GetSuggestedEdits(List <string> ids, SuggestedEditFilter filters)
        {
            var url = ApiUrlBuilder.Initialize(_apiKey)
                      .ForClient(ClientType.Posts)
                      .WithFilter(filters)
                      .WithIds(ids, "suggested-edits")
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Post> >().ValidateApiResponse();

            return(response);
        }
        BaseResponse <Question> IAnswers.GetQuestionByAnswerIds(List <string> ids, AnswerFilters filters)
        {
            var url = ApiUrlBuilder.Initialize(_apiKey)
                      .ForClient(ClientType.Answers)
                      .WithFilter(filters)
                      .WithIds(ids)
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Question> >().ValidateApiResponse();

            return(response);
        }
        BaseResponse <Answer> IAnswers.GetAllAnswers(AnswerFilters filters)
        {
            var url = ApiUrlBuilder
                      .Initialize(_apiKey)
                      .ForClient(ClientType.Answers)
                      .WithFilter(filters)
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Answer> >().ValidateApiResponse();

            return(response);
        }
        BaseResponse <Question> IQuestions.GetFeaturedQuestions(QuestionFilters filters)
        {
            var url = ApiUrlBuilder
                      .Initialize(_apiKey)
                      .ForClient(ClientType.Questions, "featured")
                      .WithFilter(filters)
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Question> >().ValidateApiResponse();

            return(response);
        }
        BaseResponse <Comment> IQuestions.GetCommentsByQuestionIds(List <string> ids, QuestionFilters filters)
        {
            var url = ApiUrlBuilder.Initialize(_apiKey)
                      .ForClient(ClientType.Questions)
                      .WithFilter(filters)
                      .WithIds(ids)
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Comment> >().ValidateApiResponse();

            return(response);
        }
Beispiel #17
0
        BaseResponse <TagSynonym> ITags.GetAllTagSynonyms(TagFilter filter)
        {
            var url = ApiUrlBuilder
                      .Initialize(_apiKey)
                      .ForClient(ClientType.Tags, "synonyms")
                      .WithFilter(filter)
                      .GetApiUrl();

            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <TagSynonym> >().ValidateApiResponse();

            return(response);
        }
Beispiel #18
0
        BaseResponse <Question> ITags.GetFrequentlyAskedQuestions(List <string> tags)
        {
            var url = ApiUrlBuilder
                      .Initialize(_apiKey)
                      .ForClient(ClientType.Tags)
                      .WithIds(tags, "faq")
                      .GetApiUrl();

            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Question> >().ValidateApiResponse();

            return(response);
        }
Beispiel #19
0
        BaseResponse <Tags> ITags.GetRelatedTags(List <string> tags)
        {
            var url = ApiUrlBuilder
                      .Initialize(_apiKey)
                      .ForClient(ClientType.Tags)
                      .WithIds(tags, "related")
                      .GetApiUrl();

            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Tags> >().ValidateApiResponse();

            return(response);
        }
Beispiel #20
0
        BaseResponse <TagScore> ITags.GetTopAskers(string tag, string period)
        {
            var url = ApiUrlBuilder
                      .Initialize(_apiKey)
                      .ForClient(ClientType.Tags)
                      .WithTagAndPeriod(tag, $"top-askers/{period}")
                      .GetApiUrl();

            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <TagScore> >().ValidateApiResponse();

            return(response);
        }
        BaseResponse <Badge> IBadges.GetAllBadges(BadgeFilters filters, string inName)
        {
            MakeSure.ArgumentNotNullOrEmptyString(inName, nameof(inName));
            var url = ApiUrlBuilder
                      .Initialize(_apiKey)
                      .ForClient(ClientType.Badges)
                      .WithFilter(filters, inName)
                      .GetApiUrl();
            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Badge> >().ValidateApiResponse();

            return(response);
        }
        BaseResponse <SuggestedEdits> ISuggestedEdits.GetAllSuggestedEdits(SuggestedEditFilter filters)
        {
            var url = ApiUrlBuilder
                      .Initialize(_apiKey)
                      .ForClient(ClientType.Suggested_Edits)
                      .WithFilter(filters)
                      .GetApiUrl();

            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <SuggestedEdits> >().ValidateApiResponse();

            return(response);
        }
Beispiel #23
0
        BaseResponse <Tags> ITags.GetTagsByNames(List <string> tags, TagFilter filter)
        {
            var url = ApiUrlBuilder
                      .Initialize(_apiKey)
                      .ForClient(ClientType.Tags)
                      .WithFilter(filter)
                      .WithIds(tags, "info")
                      .GetApiUrl();

            var response = _httpClient.GetAsync(url).Result.ReadAsJsonAsync <Data <Tags> >().ValidateApiResponse();

            return(response);
        }
        public void GetFullPathForInStoreApiService()
        {
            // arrange
            payConfig.Region      = Region.UnitedStates;
            payConfig.Environment = Environment.Sandbox;
            apiUrlBuilder         = new ApiUrlBuilder(payConfig);
            Uri expectedURL = new Uri("https://pay-api.amazon.com/sandbox/v2/in-store/merchantScan/");

            // act
            Uri actualURL = apiUrlBuilder.BuildFullApiPath(Constants.ApiServices.InStore, Constants.Resources.InStore.MerchantScan);

            // assert
            Assert.AreEqual(expectedURL, actualURL);
        }
        public void GetApiEndPointBaseUrlForJapanSandbox()
        {
            // arrange
            payConfig.Region      = Region.Japan;
            payConfig.Environment = Environment.Sandbox;
            apiUrlBuilder         = new ApiUrlBuilder(payConfig);
            Uri expectedURL = new Uri("https://pay-api.amazon.jp/sandbox/");

            // act
            Uri actualURL = apiUrlBuilder.GetApiEndPointBaseUrl();

            // assert
            Assert.AreEqual(expectedURL, actualURL);
        }
        public void GetApiEndPointBaseUrlForUnitedStatesLive()
        {
            // arrange
            payConfig.Region      = Region.UnitedStates;
            payConfig.Environment = Environment.Live;
            apiUrlBuilder         = new ApiUrlBuilder(payConfig);
            Uri expectedURL = new Uri("https://pay-api.amazon.com/live/");

            // act
            Uri actualURL = apiUrlBuilder.GetApiEndPointBaseUrl();

            // assert
            Assert.AreEqual(expectedURL, actualURL);
        }
        // Generic method used to verify Unified Endpoint Full Path
        public void VerifyUnifiedEndpointFullPath(Region region, string publicKeyId, string url, string apiService, string resource)
        {
            // Configuration
            payConfig.Region      = region;
            payConfig.PublicKeyId = publicKeyId;
            apiUrlBuilder         = new ApiUrlBuilder(payConfig);

            // Building URL
            Uri expectedURL = new Uri(url);
            Uri actualURL   = apiUrlBuilder.BuildFullApiPath(apiService, resource);

            // Assertion
            Assert.AreEqual(expectedURL, actualURL);
        }
        // Generic method used to verify Unified Endpoint Base URL
        public void VerifyUnifiedEndpointBaseURL(Region region, string publicKeyId, string url)
        {
            // Configuration
            payConfig.Region      = region;
            payConfig.PublicKeyId = publicKeyId;
            apiUrlBuilder         = new ApiUrlBuilder(payConfig);

            // Building URL
            Uri expectedURL = new Uri(url);
            Uri actualURL   = apiUrlBuilder.GetApiEndPointBaseUrl();

            // Assertion
            Assert.AreEqual(expectedURL, actualURL);
        }
        public void GetFullPathForTokenExchangeApi()
        {
            // arrange
            payConfig.Region      = Region.UnitedStates;
            payConfig.Environment = Environment.Sandbox;
            apiUrlBuilder         = new ApiUrlBuilder(payConfig);
            Uri expectedURL = new Uri("https://pay-api.amazon.com/sandbox/v2/authorizationTokens/");

            // act
            Uri actualURL = apiUrlBuilder.BuildFullApiPath(Constants.ApiServices.Default, Constants.Resources.TokenExchange);

            // assert
            Assert.AreEqual(expectedURL, actualURL);
        }
Beispiel #30
0
        public override void Load()
        {
            var mongoDb             = new MongoClient(Properties.Settings.Default.MongoConnection);
            var mongoConnection     = mongoDb.GetDatabase(Properties.Settings.Default.DatabaseName);
            var masterConfiguration = ConfigurationManager.GetCurrentConfiguration(Properties.Settings.Default.MasterConfigLocation);
            var baseHostString      = ApiUrlBuilder.BuildApiStaticDataUrl(Regions.euw, masterConfiguration);

            Bind <IRepositoryFactory>().To <RepositoryFactory>().WithConstructorArgument(mongoConnection);
            Bind <IProcessingStrategyFactory>().To <ProcessingStrategyFactory>();
            Bind <IQueryExecutor>().To <QueryExecutor>().WithConstructorArgument(new HttpClient());
            Bind <IQueryBuilder>().To <QueryBuilder>()
            .WithConstructorArgument("apiKey", Properties.Settings.Default.ApiKey)
            .WithConstructorArgument("host", baseHostString);
        }
Beispiel #31
0
        public void GetFullPathForDeliveryTrackerApiService()
        {
            // arrange
            payConfig.Region      = Region.UnitedStates;
            payConfig.Environment = Environment.Sandbox;
            apiUrlBuilder         = new ApiUrlBuilder(payConfig);
            Uri expectedURL = new Uri("https://pay-api.amazon.com/sandbox/v1/deliveryTrackers/");

            // act
            Uri actualURL = apiUrlBuilder.BuildFullApiPath(Constants.ApiServices.Default, Constants.Resources.DeliveryTracker);

            // assert
            Assert.AreEqual(expectedURL, actualURL);
        }
Beispiel #32
0
 public CryptoRush()
 {
     ApiUrl = new ApiUrlBuilder();
     HtmlWeb = new HtmlWeb();
 }
Beispiel #33
0
 public Mintpal()
 {
     ApiUrl = new ApiUrlBuilder();
     HtmlWeb = new HtmlWeb();
 }
Beispiel #34
0
 public CryptoTrade()
 {
     ApiUrl = new ApiUrlBuilder();
     HttpClient = new System.Net.Http.HttpClient();
 }
Beispiel #35
0
 public Poloniex()
 {
     ApiUrl = new ApiUrlBuilder();
     HttpClient = new System.Net.Http.HttpClient();
 }