Ejemplo n.º 1
0
        private MercadoPagoApiException BuildApiErrorException(MercadoPagoResponse response)
        {
            ApiError apiError;

            try
            {
                apiError = Serializer.DeserializeFromJson <ApiError>(response.Content);
            }
            catch (Exception)
            {
                apiError = null;
            }

            return(new MercadoPagoApiException("Error response from API.", response)
            {
                ApiError = apiError,
            });
        }
Ejemplo n.º 2
0
        public async Task ExecuteRequestAsync_WithHttpRequestExceptionRetry_Success()
        {
            // Request
            var url            = "http://localhost:8080/x";
            var method         = HttpMethod.GET;
            var requestContent = "Test";
            var requestHeaders = new Dictionary <string, string>
            {
                ["X-Custom-Header"] = "123",
            };
            var request = new MercadoPagoRequest(url, method, requestHeaders, requestContent);

            // Response
            var responseStatusCode = HttpStatusCode.OK;
            var responseContent    = "OK";
            var httpResponse       = new HttpResponseMessage(responseStatusCode)
            {
                Content = new StringContent(responseContent),
            };

            // Mock
            var httpClientMock = new HttpClientMock();

            httpClientMock.MockRequest(
                url,
                System.Net.Http.HttpMethod.Get,
                (setupReturns) =>
                setupReturns
                .ThrowsAsync(new HttpRequestException())
                .ReturnsAsync(httpResponse));

            var httpClient               = new DefaultHttpClient(httpClientMock.HttpClient);
            var retryStrategy            = new DefaultRetryStrategy(1);
            MercadoPagoResponse response =
                await httpClient.SendAsync(request, retryStrategy, default);

            Assert.Equal((int)responseStatusCode, response.StatusCode);
            Assert.Equal(responseContent, response.Content);
        }
Ejemplo n.º 3
0
        private TResponse ParseResponse <TResponse>(MercadoPagoResponse response)
            where TResponse : IResource, new()
        {
            if (response.StatusCode != 200 && response.StatusCode != 201)
            {
                throw BuildApiErrorException(response);
            }

            TResponse resource;

            try
            {
                resource = Serializer.DeserializeFromJson <TResponse>(response.Content);
            }
            catch (Exception)
            {
                throw BuildInvalidResponseException(response);
            }

            resource.ApiResponse = response;

            return(resource);
        }
Ejemplo n.º 4
0
 private MercadoPagoApiException BuildInvalidResponseException(MercadoPagoResponse response)
 {
     return(new MercadoPagoApiException("Invalid response from API.", response));
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MercadoPagoApiException"/> class.
 /// </summary>
 /// <param name="message">Message of the exception.</param>
 /// <param name="response">Response from API.</param>
 public MercadoPagoApiException(string message, MercadoPagoResponse response)
     : base(message)
 {
     ApiResponse = response;
     StatusCode  = response?.StatusCode;
 }