Skip to content

Commit 925a0f4

Browse files
committed
Release/Version1.0: Modify code design in some repositories. Add an enum with a mini menu to do some testing on the example app.
1 parent 4a1473b commit 925a0f4

File tree

4 files changed

+115
-23
lines changed

4 files changed

+115
-23
lines changed

src/IOLApiClient.Auth.Repository/Repositories/LoginRepository.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,8 @@ public async Task Login()
5151
using (var client = new HttpClient())
5252
{
5353
BuildDefaultHeaders(client);
54-
var parameters = BuildLoginPostParameters();
5554

56-
using (var content = new FormUrlEncodedContent(parameters))
55+
using (var content = new FormUrlEncodedContent(BuildLoginPostParameters()))
5756
{
5857
BuildLoginContent(content);
5958

src/IOLApiClient.Auth.Repository/Repositories/RefreshTokenRepository.cs

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public class RefreshTokenRepository : IRefreshTokenRepository
1919
static string _methodRefreshTokenMessageDiagnose = $"Method: {nameof(RefreshToken)}";
2020
static string _methodBuildTokenURLMessageDiagnose = $"Method: {nameof(BuildTokenURL)}";
2121
static string _methodLogLoginRespondeModelMessageDiagnose = $"Method: {nameof(LogLoginRespondeModel)}";
22-
22+
static string _methodBuildDefaultHeadersMessageDiagnose = $"Method: {nameof(BuildDefaultHeaders)}";
23+
static string _methodRefreshTokenPostParametersMessageDiagnose = $"Method: {nameof(BuildRefreshTokenPostParameters)}";
2324

2425
const string _GRANT_TYPE_REFRESH_TOKEN_POST_VALUE = "refresh_token";
2526
const string _GRANT_TYPE_POST_KEY = "grant_type";
@@ -43,20 +44,9 @@ public async Task RefreshToken()
4344
{
4445
using (var client = new HttpClient())
4546
{
46-
client.DefaultRequestHeaders.Accept.Clear();
47-
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
48-
client.DefaultRequestHeaders.Add("User-Agent", ".NET-Core-3.1-client");
49-
client.DefaultRequestHeaders.Add("Connection", "keep-alive");
50-
client.DefaultRequestHeaders.Add("Cache-Control", "no-cache");
51-
client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br");
52-
53-
var parameters = new Dictionary<string, string>
54-
{
55-
{ _GRANT_TYPE_POST_KEY, _GRANT_TYPE_REFRESH_TOKEN_POST_VALUE },
56-
{ _GRANT_TYPE_REFRESH_TOKEN_POST_VALUE, _bearerTokenData.LoginResponseModel.RefreshToken }
57-
};
47+
BuildDefaultHeaders(client);
5848

59-
using (var content = new FormUrlEncodedContent(parameters))
49+
using (var content = new FormUrlEncodedContent(BuildRefreshTokenPostParameters()))
6050
{
6151
var result = await client.PostAsync(BuildTokenURL(), content);
6252

@@ -79,6 +69,48 @@ public async Task RefreshToken()
7969
}
8070
}
8171

72+
private void BuildDefaultHeaders(HttpClient client)
73+
{
74+
client.DefaultRequestHeaders.Accept.Clear();
75+
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
76+
client.DefaultRequestHeaders.Add("User-Agent", ".NET-Core-3.1-client");
77+
client.DefaultRequestHeaders.Add("Connection", "keep-alive");
78+
client.DefaultRequestHeaders.Add("Cache-Control", "no-cache");
79+
client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br");
80+
81+
if (_logger.IsEnabled(LogEventLevel.Debug))
82+
{
83+
foreach (var defaultRequestHeader in client.DefaultRequestHeaders)
84+
{
85+
IEnumerable<string> values = defaultRequestHeader.Value;
86+
87+
foreach (var value in values)
88+
{
89+
_logger.Debug($"{_classRefreshTokenMessageDiagnose} {_methodBuildDefaultHeadersMessageDiagnose}, default header assigned key: {defaultRequestHeader.Key}, value: {value}");
90+
}
91+
}
92+
}
93+
}
94+
95+
private Dictionary<string, string> BuildRefreshTokenPostParameters()
96+
{
97+
var result = new Dictionary<string, string>
98+
{
99+
{ _GRANT_TYPE_POST_KEY, _GRANT_TYPE_REFRESH_TOKEN_POST_VALUE },
100+
{ _GRANT_TYPE_REFRESH_TOKEN_POST_VALUE, _bearerTokenData.LoginResponseModel.RefreshToken }
101+
};
102+
103+
if (_logger.IsEnabled(LogEventLevel.Debug))
104+
{
105+
foreach (var item in result)
106+
{
107+
_logger.Debug($"{_classRefreshTokenMessageDiagnose} {_methodRefreshTokenPostParametersMessageDiagnose}, parameters post key: {item.Key}, value: {item.Value}");
108+
}
109+
}
110+
111+
return result;
112+
}
113+
82114
private string BuildTokenURL()
83115
{
84116
var tokenURL = $"{_loginRepositorySettings.BaseUrl}/token";
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace IOLApiClient.Example.Presentation.Abstractions.Enums
6+
{
7+
public enum IOLApiClientExampleTests
8+
{
9+
Login = 1,
10+
LoginAndRefreshToken = 2
11+
}
12+
}

src/IOLApiClient.Example.Presentation/Program.cs

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using IOLApiClient.Auth.Repository.Abstractions.Interfaces;
2+
using IOLApiClient.Example.Presentation.Abstractions.Enums;
23
using Microsoft.Extensions.DependencyInjection;
34
using Serilog;
45
using System;
@@ -13,18 +14,66 @@ static void Main(string[] args)
1314
Startup.RegisterDependencies();
1415

1516
var loginRepository = Startup.ServiceProvider.GetService<ILoginRepository>();
17+
var refreshTokenRepository = Startup.ServiceProvider.GetService<IRefreshTokenRepository>();
1618
var logger = Startup.ServiceProvider.GetService<ILogger>();
17-
Task.Run(async () =>
19+
20+
string textInput;
21+
22+
Console.WriteLine($"Welcome to IOLApiClient example app. {Environment.NewLine}Follow the examples and WARNING!!!! be carefully if you're using your production account on active trading hours!{Environment.NewLine}");
23+
Console.WriteLine($"Follow the next instructions to exit the app or do your respective testing...{Environment.NewLine}");
24+
25+
Console.WriteLine($"Write :q to exit this loop and terminate this test app.{Environment.NewLine}");
26+
27+
do
1828
{
19-
try
29+
foreach (var value in Enum.GetValues(typeof(IOLApiClientExampleTests)))
2030
{
21-
await loginRepository.Login();
31+
Console.WriteLine($"Write number: {(int)value}, to initialize the test: {((IOLApiClientExampleTests)value)}");
2232
}
23-
catch (Exception ex)
33+
34+
textInput = Console.ReadLine();
35+
36+
if (textInput == ":q")
37+
break;
38+
39+
var testNumber = (IOLApiClientExampleTests)Convert.ToInt32(textInput);
40+
41+
switch (testNumber)
2442
{
25-
logger.Information(ex, "An error ocurred on API login");
26-
}
27-
}).Wait();
43+
case IOLApiClientExampleTests.Login:
44+
Task.Run(async () =>
45+
{
46+
try
47+
{
48+
await loginRepository.Login();
49+
}
50+
catch (Exception ex)
51+
{
52+
logger.Information(ex, "An error ocurred on API login");
53+
}
54+
}).Wait();
55+
break;
56+
case IOLApiClientExampleTests.LoginAndRefreshToken:
57+
Task.Run(() =>
58+
{
59+
try
60+
{
61+
loginRepository.Login().Wait();
62+
refreshTokenRepository.RefreshToken().Wait();
63+
}
64+
catch (Exception ex)
65+
{
66+
logger.Information(ex, "An error ocurred on API login");
67+
}
68+
}).Wait();
69+
break;
70+
default:
71+
logger.Information($"Invalid test parameter {testNumber}");
72+
break;
73+
}
74+
} while (textInput != ":q");
75+
76+
Console.WriteLine($"Exiting app, press any key to continue...");
2877

2978
Console.ReadLine();
3079
}

0 commit comments

Comments
 (0)