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); }