Skip to content

Commit 47da964

Browse files
Dmitry KovalDmitry Koval
authored andcommitted
Switched from ApiKey as query parameter to bearer token in HTTP header (for V5 API only).
1 parent 06e5a6b commit 47da964

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

route4me-csharp-sdk/Route4MeSDKLibrary/HttpClientHolderManager.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ static HttpClientHolderManager()
2424
new SequentialTimer(OnTimerCallback, TimeSpan.FromHours(2));
2525
}
2626

27-
public static HttpClientHolder AcquireHttpClientHolder(string baseAddress)
27+
public static HttpClientHolder AcquireHttpClientHolder(string baseAddress, string apiKey = null)
2828
{
2929
lock (SyncRoot)
3030
{
@@ -37,7 +37,7 @@ public static HttpClientHolder AcquireHttpClientHolder(string baseAddress)
3737
}
3838
else
3939
{
40-
wrapper = new HttpClientWrapper(CreateHttpClient(baseAddress));
40+
wrapper = new HttpClientWrapper(CreateHttpClient(baseAddress, apiKey));
4141
HttpClientWrappers.Add(baseAddress, wrapper);
4242
}
4343

@@ -57,13 +57,17 @@ public static void ReleaseHttpClientHolder(string baseAddress)
5757
}
5858
}
5959

60-
private static HttpClient CreateHttpClient(string baseAddress)
60+
private static HttpClient CreateHttpClient(string baseAddress, string apiKey = null)
6161
{
6262
var result = new HttpClient {BaseAddress = new Uri(baseAddress), Timeout = TimeSpan.FromMinutes(30)};
6363

6464
result.DefaultRequestHeaders.Accept.Clear();
6565
result.DefaultRequestHeaders.ConnectionClose = false;
6666
result.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
67+
if (apiKey != null)
68+
{
69+
result.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
70+
}
6771

6872
ServicePointManager.FindServicePoint(new Uri(baseAddress)).ConnectionLeaseTimeout = 60 * 1000;
6973

route4me-csharp-sdk/Route4MeSDKLibrary/Managers/Route4MeManagerBase.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,15 @@ protected async Task<Tuple<T, ResultResponse, string>> GetJsonObjectFromAPIAsync
141141
var resultResponse = default(ResultResponse);
142142
string jobId = default(string);
143143

144-
var parametersURI = optimizationParameters.Serialize(ApiKey);
144+
bool v5 = R4MeUtils.IsV5(url);
145+
146+
var parametersURI = optimizationParameters.Serialize(v5 ? null : ApiKey);
145147
var uri = new Uri($"{url}{parametersURI}");
146148

147149
try
148150
{
149151
using (var httpClientHolder =
150-
HttpClientHolderManager.AcquireHttpClientHolder(uri.GetLeftPart(UriPartial.Authority)))
152+
HttpClientHolderManager.AcquireHttpClientHolder(uri.GetLeftPart(UriPartial.Authority), v5 ? ApiKey : null))
151153
{
152154
switch (httpMethod)
153155
{
@@ -382,14 +384,14 @@ protected T GetJsonObjectFromAPI<T>(GenericParameters optimizationParameters,
382384
{
383385
var result = default(T);
384386
resultResponse = default;
385-
386-
var parametersUri = optimizationParameters.Serialize(ApiKey);
387+
bool v5 = R4MeUtils.IsV5(url);
388+
var parametersUri = optimizationParameters.Serialize(v5 ? null : ApiKey);
387389
var uri = new Uri($"{url}{parametersUri}");
388390

389391
try
390392
{
391393
using (var httpClientHolder =
392-
HttpClientHolderManager.AcquireHttpClientHolder(uri.GetLeftPart(UriPartial.Authority)))
394+
HttpClientHolderManager.AcquireHttpClientHolder(uri.GetLeftPart(UriPartial.Authority), v5 ? ApiKey : null))
393395
{
394396
switch (httpMethod)
395397
{

route4me-csharp-sdk/Route4MeSDKLibrary/Utils.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,5 +938,16 @@ public static string GenerateTestEmail(string emailTemplate)
938938
string[] emailParts = emailTemplate.Split('@');
939939
return emailParts[0] + "+" + ConvertToUnixTimestamp(DateTime.Now)+GenerateRandomString(4) + "@" + emailParts[1];
940940
}
941+
942+
public static bool IsV5(string url)
943+
{
944+
bool v5 = false;
945+
if (Uri.TryCreate(url, UriKind.Absolute, out var u))
946+
{
947+
v5 = u.Host.StartsWith("wh");
948+
}
949+
950+
return v5;
951+
}
941952
}
942953
}

0 commit comments

Comments
 (0)