Пример #1
0
        public static T GetTokenFromCache <T>(
            this ObjectCache cache,
            PayUClientSettings settings,
            IHttpClientFactory clientFactory,
            TrustedMerchant tm)
            where T : PayUToken
        {
            var tokenKey = tm != null?
                           string.Format(CultureInfo.InvariantCulture, PayUContainer.TokenCacheTrustedFormat, tm.Email, tm.ExtCustomerId) :
                               PayUContainer.TokenCacheKey;

            var cachedObject = (T)cache[tokenKey];

            if (cachedObject == null)
            {
                var request      = PayUClientRequestBuilder.BuildTokenRequestMessage(settings, tm);
                var communicator = new PayUApiHttpCommunicator <PayUToken>(clientFactory, settings);
                cachedObject = (T)communicator.Send(request);
                var policy = new CacheItemPolicy();
                policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(cachedObject.ExpireIn - 30);
                cache.Set(tokenKey, cachedObject, policy);
            }

            return(cachedObject);
        }
        public async void BuildTokenRequestMessage_CorrectSettings_CorrectBuildedTrustedTokenRequest()
        {
            var expectedAcceptContent = new MediaTypeWithQualityHeaderValue("application/json");
            var settings = new PayUClientSettings("http://www.localhost.com", "v1", "1", "2");

            var result = PayUClientRequestBuilder.BuildTokenRequestMessage(settings, new TrustedMerchant("*****@*****.**", "extCustomerId"));

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

            Assert.Equal(HttpMethod.Post, result.Method);
            Assert.Equal(new Uri("http://www.localhost.com/pl/standard/user/oauth/authorize"), result.RequestUri);
            Assert.Contains(expectedAcceptContent, result.Headers.Accept);
            Assert.Equal("grant_type=trusted_merchant&client_id=1&client_secret=2&email=test%40test.com&ext_customer_id=extCustomerId", content, true);
        }
        public async void BuildTokenRequestMessage_CorrectSettings_CorrectBuildedTokenRequest()
        {
            var expectedAcceptContent = new MediaTypeWithQualityHeaderValue("application/json");
            var settings = new PayUClientSettings("http://www.localhost.com", "v1", "1", "2");

            var result = PayUClientRequestBuilder.BuildTokenRequestMessage(settings, null);

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

            Assert.Equal(HttpMethod.Post, result.Method);
            Assert.Equal(new Uri("http://www.localhost.com/pl/standard/user/oauth/authorize"), result.RequestUri);
            Assert.Contains(expectedAcceptContent, result.Headers.Accept);
            Assert.Equal("grant_type=client_credentials&client_id=1&client_secret=2", content);
        }
Пример #4
0
 protected T Process <T>(Uri requestUrl, HttpMethod httpMethod, object content = default(HttpContent), TrustedMerchant trustedMerchant = null)
     where T : class
 {
     try
     {
         var token        = this.cache.GetTokenFromCache <PayUToken>(this.settings, this.clientFactory, trustedMerchant);
         var request      = PayUClientRequestBuilder.BuildRequestMessage(requestUrl, httpMethod, token.AccessToken, content);
         var communicator = new PayUApiHttpCommunicator <T>(this.clientFactory, this.settings);
         return(communicator.Send(request));
     }
     catch
     {
         throw;
     }
 }
Пример #5
0
        protected async Task <T> ProcessAsync <T>(Uri requestUrl, HttpMethod httpMethod, CancellationToken ct, object content = default(HttpContent), TrustedMerchant trustedMerchant = null)
            where T : class
        {
            try
            {
                var token = await this.cache.GetTokenFromCacheAsync <PayUToken>(this.settings, this.clientFactory, trustedMerchant, ct);

                var request      = PayUClientRequestBuilder.BuildRequestMessage(requestUrl, httpMethod, token.AccessToken, content);
                var communicator = new PayUApiHttpCommunicator <T>(this.clientFactory, this.settings);
                return(await communicator.SendAsync(request, ct));
            }
            catch
            {
                throw;
            }
        }
        public void BuildOAuthTokenUrl_DeleteMethod_CorrectBuildedRequest()
        {
            var result = PayUClientRequestBuilder.BuildRequestMessage(new Uri("http://localhost"), HttpMethod.Delete, "fakeToken");

            this.AssertBuildRequestMessage(result, HttpMethod.Delete, false);
        }
        public void BuildOAuthTokenUrl_PutMethod_CorrectBuildedRequest()
        {
            var result = PayUClientRequestBuilder.BuildRequestMessage(new Uri("http://localhost"), HttpMethod.Put, "fakeToken", new object());

            this.AssertBuildRequestMessage(result, HttpMethod.Put, true);
        }