Skip to content

Commit b405d26

Browse files
committed
Modifications for rewrite of RestClient
1 parent 199e7c5 commit b405d26

File tree

4 files changed

+55
-39
lines changed

4 files changed

+55
-39
lines changed

Client/ApiClient.cs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,10 @@ public class RestClientFactory
3838
{
3939
private static readonly ConcurrentDictionary<int, Lazy<RestClient>> _restClientInstances = new ConcurrentDictionary<int, Lazy<RestClient>>();
4040

41-
public static RestClient GetRestClient(Configuration configuration, RestClientOptions clientOptions)
41+
public static RestClient GetRestClient(MerchantConfig merchantConfig, RestClientOptions clientOptions)
4242
{
43-
if (configuration.MerchantConfigDictionaryObj != null)
43+
if (merchantConfig != null)
4444
{
45-
var merchantConfig = new MerchantConfig(configuration.MerchantConfigDictionaryObj);
46-
4745
ServicePointManager.DefaultConnectionLimit = int.Parse(merchantConfig.MaxConnectionPoolSize);
4846
ServicePointManager.MaxServicePointIdleTime = int.Parse(merchantConfig.KeepAliveTime);
4947
}
@@ -344,11 +342,13 @@ public object CallApi(
344342
path, method, queryParams, postBody, headerParams, formParams, fileParams,
345343
pathParams, contentType);
346344

347-
var newRestClientOptions = GetRestClientOptions(Configuration);
345+
MerchantConfig merchantConfig = new MerchantConfig(merchantConfigDictionary: Configuration.MerchantConfigDictionaryObj, mapToControlMLEonAPI: Configuration.MapToControlMLEonAPI);
346+
347+
var newRestClientOptions = GetRestClientOptions(merchantConfig, Configuration.UserAgent, TimeSpan.FromMilliseconds(Configuration.Timeout));
348348

349349
// RestClient.ClearHandlers();
350350

351-
var actualRestClient = RestClientFactory.GetRestClient(Configuration, newRestClientOptions);
351+
var actualRestClient = RestClientFactory.GetRestClient(merchantConfig, newRestClientOptions);
352352

353353
// Logging Request Headers
354354
var headerPrintOutput = new StringBuilder();
@@ -391,18 +391,16 @@ public object CallApi(
391391
return response;
392392
}
393393

394-
private RestClientOptions GetRestClientOptions(Configuration configuration)
394+
private RestClientOptions GetRestClientOptions(MerchantConfig merchantConfig, string userAgent, TimeSpan timeout)
395395
{
396396
RestClientOptions clientOptions = new RestClientOptions();
397397

398-
clientOptions.UserAgent = configuration.UserAgent;
399-
clientOptions.Timeout = TimeSpan.FromMilliseconds(configuration.Timeout);
398+
clientOptions.UserAgent = userAgent;
399+
clientOptions.Timeout = timeout;
400400

401-
var merchantConfig = configuration.MerchantConfigDictionaryObj != null
402-
? new MerchantConfig(configuration.MerchantConfigDictionaryObj)
403-
: new MerchantConfig();
404-
405-
if (configuration.Proxy == null && merchantConfig.UseProxy != null)
401+
IWebProxy webProxy = null;
402+
403+
if (merchantConfig.UseProxy != null)
406404
{
407405
if (bool.Parse(merchantConfig.UseProxy))
408406
{
@@ -415,14 +413,14 @@ private RestClientOptions GetRestClientOptions(Configuration configuration)
415413
proxy.Credentials = new NetworkCredential(merchantConfig.ProxyUsername, merchantConfig.ProxyPassword);
416414
}
417415

418-
configuration.AddWebProxy(proxy);
416+
webProxy = proxy;
419417
}
420418
}
421419
}
422420

423-
if (configuration.Proxy != null)
421+
if (webProxy != null)
424422
{
425-
clientOptions.Proxy = configuration.Proxy;
423+
clientOptions.Proxy = webProxy;
426424
}
427425

428426
if (Equals(bool.Parse(merchantConfig.EnableClientCert), true))
@@ -506,9 +504,11 @@ public async System.Threading.Tasks.Task<object> CallApiAsync(
506504

507505
logger.Debug($"HTTP Request Headers :\n{logUtility.MaskSensitiveData(headerPrintOutput.ToString())}");
508506

509-
var newRestClientOptions = GetRestClientOptions(Configuration);
507+
MerchantConfig merchantConfig = new MerchantConfig(merchantConfigDictionary: Configuration.MerchantConfigDictionaryObj, mapToControlMLEonAPI: Configuration.MapToControlMLEonAPI);
508+
509+
var newRestClientOptions = GetRestClientOptions(merchantConfig, Configuration.UserAgent, TimeSpan.FromMilliseconds(Configuration.Timeout));
510510

511-
var actualRestClient = RestClientFactory.GetRestClient(Configuration, newRestClientOptions);
511+
var actualRestClient = RestClientFactory.GetRestClient(merchantConfig, newRestClientOptions);
512512

513513
InterceptRequest(request);
514514
var response = await actualRestClient.ExecuteAsync(request);

Client/Configuration.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,15 @@ public Configuration(ApiClient apiClient = null,
8585
}
8686
}
8787
}
88+
89+
if (merchConfigDictObj.ContainsKey("timeout"))
90+
{
91+
Timeout = int.Parse(merchConfigDictObj["timeout"]);
92+
}
93+
else
94+
{
95+
Timeout = timeout;
96+
}
8897
}
8998

9099
if (defaultHeader != null)
@@ -96,7 +105,6 @@ public Configuration(ApiClient apiClient = null,
96105

97106
TempFolderPath = tempFolderPath;
98107
DateTimeFormat = dateTimeFormat;
99-
Timeout = timeout;
100108
MerchantConfigDictionaryObj = merchConfigDictObj;
101109
MapToControlMLEonAPI = mapToControlMLEonAPI;
102110

generator/cybersource-csharp-template/ApiClient.mustache

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,10 @@ namespace {{packageName}}.Client
3939
{
4040
private static readonly ConcurrentDictionary<int, Lazy<RestClient>> _restClientInstances = new ConcurrentDictionary<int, Lazy<RestClient>>();
4141
42-
public static RestClient GetRestClient(Configuration configuration, RestClientOptions clientOptions)
42+
public static RestClient GetRestClient(MerchantConfig merchantConfig, RestClientOptions clientOptions)
4343
{
44-
if (configuration.MerchantConfigDictionaryObj != null)
44+
if (merchantConfig != null)
4545
{
46-
var merchantConfig = new MerchantConfig(configuration.MerchantConfigDictionaryObj);
47-
4846
ServicePointManager.DefaultConnectionLimit = int.Parse(merchantConfig.MaxConnectionPoolSize);
4947
ServicePointManager.MaxServicePointIdleTime = int.Parse(merchantConfig.KeepAliveTime);
5048
}
@@ -383,11 +381,13 @@ namespace {{packageName}}.Client
383381
path, method, queryParams, postBody, headerParams, formParams, fileParams,
384382
pathParams, contentType);
385383

386-
var newRestClientOptions = GetRestClientOptions(Configuration);
384+
MerchantConfig merchantConfig = new MerchantConfig(merchantConfigDictionary: Configuration.MerchantConfigDictionaryObj, mapToControlMLEonAPI: Configuration.MapToControlMLEonAPI);
385+
386+
var newRestClientOptions = GetRestClientOptions(merchantConfig, Configuration.UserAgent, TimeSpan.FromMilliseconds(Configuration.Timeout));
387387

388388
// RestClient.ClearHandlers();
389389

390-
var actualRestClient = RestClientFactory.GetRestClient(Configuration, newRestClientOptions);
390+
var actualRestClient = RestClientFactory.GetRestClient(merchantConfig, newRestClientOptions);
391391

392392
// Logging Request Headers
393393
var headerPrintOutput = new StringBuilder();
@@ -441,18 +441,16 @@ namespace {{packageName}}.Client
441441
return response;
442442
}
443443

444-
private RestClientOptions GetRestClientOptions(Configuration configuration)
444+
private RestClientOptions GetRestClientOptions(MerchantConfig merchantConfig, string userAgent, TimeSpan timeout)
445445
{
446446
RestClientOptions clientOptions = new RestClientOptions();
447447
448-
clientOptions.UserAgent = configuration.UserAgent;
449-
clientOptions.Timeout = TimeSpan.FromMilliseconds(configuration.Timeout);
448+
clientOptions.UserAgent = userAgent;
449+
clientOptions.Timeout = timeout;
450450
451-
var merchantConfig = configuration.MerchantConfigDictionaryObj != null
452-
? new MerchantConfig(configuration.MerchantConfigDictionaryObj)
453-
: new MerchantConfig();
451+
IWebProxy webProxy = null;
454452
455-
if (configuration.Proxy == null && merchantConfig.UseProxy != null)
453+
if (merchantConfig.UseProxy != null)
456454
{
457455
if (bool.Parse(merchantConfig.UseProxy))
458456
{
@@ -465,14 +463,14 @@ namespace {{packageName}}.Client
465463
proxy.Credentials = new NetworkCredential(merchantConfig.ProxyUsername, merchantConfig.ProxyPassword);
466464
}
467465

468-
configuration.AddWebProxy(proxy);
466+
webProxy = proxy;
469467
}
470468
}
471469
}
472470

473-
if (configuration.Proxy != null)
471+
if (webProxy != null)
474472
{
475-
clientOptions.Proxy = configuration.Proxy;
473+
clientOptions.Proxy = webProxy;
476474
}
477475

478476
if (Equals(bool.Parse(merchantConfig.EnableClientCert), true))
@@ -557,9 +555,11 @@ namespace {{packageName}}.Client
557555

558556
logger.Debug($"HTTP Request Headers :\n{logUtility.MaskSensitiveData(headerPrintOutput.ToString())}");
559557

560-
var newRestClientOptions = GetRestClientOptions(Configuration);
558+
MerchantConfig merchantConfig = new MerchantConfig(merchantConfigDictionary: Configuration.MerchantConfigDictionaryObj, mapToControlMLEonAPI: Configuration.MapToControlMLEonAPI);
559+
560+
var newRestClientOptions = GetRestClientOptions(merchantConfig, Configuration.UserAgent, TimeSpan.FromMilliseconds(Configuration.Timeout));
561561

562-
var actualRestClient = RestClientFactory.GetRestClient(Configuration, newRestClientOptions);
562+
var actualRestClient = RestClientFactory.GetRestClient(merchantConfig, newRestClientOptions);
563563

564564
InterceptRequest(request);
565565
var response = await actualRestClient.Execute{{^netStandard}}Async{{/netStandard}}(request);

generator/cybersource-csharp-template/Configuration.mustache

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,15 @@ namespace {{packageName}}.Client
7676
}
7777
}
7878
}
79+
80+
if (merchConfigDictObj.ContainsKey("timeout"))
81+
{
82+
Timeout = int.Parse(merchConfigDictObj["timeout"]);
83+
}
84+
else
85+
{
86+
Timeout = {{#netStandard}}TimeSpan.FromMilliseconds({{/netStandard}}timeout{{#netStandard}}){{/netStandard}};
87+
}
7988
}
8089

8190
if (defaultHeader != null)
@@ -87,7 +96,6 @@ namespace {{packageName}}.Client
8796

8897
TempFolderPath = tempFolderPath;
8998
DateTimeFormat = dateTimeFormat;
90-
Timeout = {{#netStandard}}TimeSpan.FromMilliseconds({{/netStandard}}timeout{{#netStandard}}){{/netStandard}};
9199
MerchantConfigDictionaryObj = merchConfigDictObj;
92100
MapToControlMLEonAPI = mapToControlMLEonAPI;
93101

0 commit comments

Comments
 (0)