Skip to content

Commit 8f8ee92

Browse files
author
AbdShullah
committed
Add more logging, changes to verification service, update nuget packages
1 parent 0fce84e commit 8f8ee92

File tree

7 files changed

+52
-35
lines changed

7 files changed

+52
-35
lines changed

OsuFriendsApi/OsuFriendsApi.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66

77
<ItemGroup>
88
<PackageReference Include="Discord.Net" Version="2.2.0" />
9-
<PackageReference Include="LiteDB" Version="5.0.8" />
10-
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0">
9+
<PackageReference Include="LiteDB" Version="5.0.9" />
10+
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0">
1111
<PrivateAssets>all</PrivateAssets>
1212
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1313
</PackageReference>
14-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.6" />
15-
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.6" />
14+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.7" />
15+
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.7" />
1616
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
1717
<PackageReference Include="Serilog" Version="2.9.0" />
1818
<PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />

OsuFriendsApi/OsuFriendsClient.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Newtonsoft.Json;
1+
using Microsoft.Extensions.Logging;
2+
using Newtonsoft.Json;
23
using OsuFriendsApi.Entities;
34
using System;
45
using System.Collections.Specialized;
@@ -12,11 +13,14 @@ public class OsuFriendsClient
1213
{
1314
private string _token;
1415
private readonly HttpClient _httpClient;
16+
private readonly ILogger _logger;
1517
public const string url = "https://osufriends.ovh/";
1618

17-
public OsuFriendsClient(HttpClient httpClient = null)
19+
public OsuFriendsClient(HttpClient httpClient, ILogger<OsuFriendsClient> logger)
1820
{
19-
_httpClient = httpClient ?? new HttpClient();
21+
_httpClient = httpClient;
22+
_logger = logger;
23+
2024
if (string.IsNullOrEmpty(_httpClient.DefaultRequestHeaders.UserAgent.ToString()))
2125
{
2226
_httpClient.DefaultRequestHeaders.Add("user-agent", "hello"); // For some reason api doesn't accept null user agent
@@ -52,10 +56,12 @@ public OsuUser CreateUser(Guid? key = null)
5256
query["secret"] = _token;
5357
uriBuilder.Query = query.ToString();
5458

59+
_logger.LogTrace("Request status for {key}", user.Key);
5560
HttpResponseMessage response = await _httpClient.GetAsync(uriBuilder.Uri).ConfigureAwait(false);
5661
response.EnsureSuccessStatusCode();
57-
58-
return JsonConvert.DeserializeObject<Status?>(await response.Content.ReadAsStringAsync().ConfigureAwait(false));
62+
var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
63+
_logger.LogTrace("Status of {key}: {status}", user.Key, content);
64+
return JsonConvert.DeserializeObject<Status?>(content);
5965
}
6066

6167
public async Task<OsuUserDetails> GetDetailsAsync(OsuUser user)
@@ -68,9 +74,12 @@ public async Task<OsuUserDetails> GetDetailsAsync(OsuUser user)
6874
query["secret"] = _token;
6975
uriBuilder.Query = query.ToString();
7076

77+
_logger.LogTrace("Request details for {key}", user.Key);
7178
HttpResponseMessage response = await _httpClient.GetAsync(uriBuilder.Uri).ConfigureAwait(false);
7279
response.EnsureSuccessStatusCode();
73-
return JsonConvert.DeserializeObject<OsuUserDetails>(await response.Content.ReadAsStringAsync().ConfigureAwait(false));
80+
var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
81+
_logger.LogTrace("Details of {key}: {details}", user.Key, content);
82+
return JsonConvert.DeserializeObject<OsuUserDetails>(content);
7483
}
7584
}
7685
}

OsuFriendsBot/OsuFriendsBot.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77

88
<ItemGroup>
99
<PackageReference Include="Discord.Net" Version="2.2.0" />
10-
<PackageReference Include="LiteDB" Version="5.0.8" />
11-
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0">
10+
<PackageReference Include="LiteDB" Version="5.0.9" />
11+
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0">
1212
<PrivateAssets>all</PrivateAssets>
1313
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1414
</PackageReference>
15-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.6" />
16-
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.6" />
15+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.7" />
16+
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.7" />
1717
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
1818
<PackageReference Include="Serilog" Version="2.9.0" />
1919
<PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />

OsuFriendsBot/Services/CommandHandlingService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ public async Task CommandExecutedAsync(Optional<CommandInfo> command, ICommandCo
9090
return;
9191
}
9292
// the command failed, let's notify the user that something happened.
93+
_logger.LogTrace("Command failed: {command} | {error} | {errorReason}", command.Value?.Name, result.Error, result.ErrorReason);
9394
await context.Channel.SendMessageAsync(embed: new ErrorEmbed(result).Build());
9495
}
9596
}

OsuFriendsBot/Services/VerificationService.cs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public VerificationService(DbUserDataService dbUserData, DiscordSocketClient dis
3939

4040
public async Task UserJoinedAsync(SocketGuildUser user)
4141
{
42-
_ = Task.Run(async () =>
42+
/*_ = Task.Run(async () =>
4343
{
4444
RuntimeResult result = await VerifyAsync(user);
4545
@@ -63,12 +63,14 @@ public async Task UserJoinedAsync(SocketGuildUser user)
6363
throw;
6464
}
6565
}
66-
});
66+
});*/
6767
await Task.CompletedTask;
6868
}
6969

7070
public async Task<RuntimeResult> VerifyAsync(SocketGuildUser user)
7171
{
72+
_logger.LogTrace("Verifying user: {username}", user.Username);
73+
7274
try
7375
{
7476
bool isVeryfying = AddVerifyingUser(user);
@@ -79,8 +81,14 @@ public async Task<RuntimeResult> VerifyAsync(SocketGuildUser user)
7981
UserData dbUser = _dbUserData.FindById(user.Id);
8082
_logger.LogTrace("DbUser : {@dbUser} | Id : {@user} | Username: {@username}", dbUser, user.Id, user.Username);
8183

82-
OsuUser osuUser;
83-
if (dbUser.OsuFriendsKey == null || true) // Token expires after one day, so we can't use it, but the api developer is working on a fix
84+
OsuUser osuUser = null;
85+
86+
if (dbUser.OsuFriendsKey != null)
87+
{
88+
osuUser = await CreateOsuUserFromUserDataAsync(dbUser);
89+
}
90+
91+
if (osuUser == null)
8492
{
8593
// If user doesn't exist in db
8694
osuUser = await CreateOsuUserAsync();
@@ -91,19 +99,12 @@ public async Task<RuntimeResult> VerifyAsync(SocketGuildUser user)
9199
bool success = await WaitForVerificationStatusAsync(osuUser);
92100
if (!success)
93101
{
102+
RemoveVerifyingUser(user);
94103
return VerificationResult.FromError($"Verification failed because it timeouted! Try again with 'verify' command on {user.Guild.Name}");
95104
}
96105
// Verification Success
97106
dbUser.OsuFriendsKey = osuUser.Key;
98107
}
99-
else
100-
{
101-
osuUser = await CreateOsuUserFromUserDataAsync(dbUser);
102-
if (osuUser == null)
103-
{
104-
return VerificationResult.FromError($"Verification failed! Verify your account again with 'verify' command on {user.Guild.Name}");
105-
}
106-
}
107108
// Success for both
108109
(List<SocketRole> grantedRoles, OsuUserDetails osuUserDetails) = await GrantUserRolesAsync(user, osuUser);
109110
await user.SendMessageAsync(embed: new GrantedRolesEmbed(user, grantedRoles, osuUserDetails, dbUser).Build());
@@ -162,7 +163,9 @@ private async Task<OsuUser> CreateOsuUserAsync()
162163
while (true)
163164
{
164165
OsuUser osuUser = _osuFriends.CreateUser();
165-
if ((await osuUser.GetStatusAsync()) == null)
166+
var status = await osuUser.GetStatusAsync();
167+
_logger.LogTrace("Verification Status: {status}", status);
168+
if (status == Status.Invalid)
166169
{
167170
return osuUser;
168171
}
@@ -172,7 +175,9 @@ private async Task<OsuUser> CreateOsuUserAsync()
172175
private async Task<OsuUser> CreateOsuUserFromUserDataAsync(UserData userData)
173176
{
174177
OsuUser osuUser = _osuFriends.CreateUser(userData.OsuFriendsKey);
175-
if (await osuUser.GetStatusAsync() != Status.Completed)
178+
var status = await osuUser.GetStatusAsync();
179+
_logger.LogTrace("OsuDb Status: {status}", status);
180+
if (status != Status.Completed)
176181
{
177182
return null;
178183
}
@@ -185,7 +190,7 @@ private async Task<bool> WaitForVerificationStatusAsync(OsuUser osuUser)
185190
for (int retry = 0; retry < 30; retry++)
186191
{
187192
Status? status = await osuUser.GetStatusAsync();
188-
_logger.LogTrace("Status: {@status}", status);
193+
_logger.LogTrace("Verification Status: {@status}", status);
189194
if (status == Status.Completed)
190195
{
191196
success = true;
@@ -199,6 +204,7 @@ private async Task<bool> WaitForVerificationStatusAsync(OsuUser osuUser)
199204
private async Task<(List<SocketRole>, OsuUserDetails)> GrantUserRolesAsync(SocketGuildUser user, OsuUser osuUser)
200205
{
201206
OsuUserDetails osuUserDetails = await osuUser.GetDetailsAsync();
207+
_logger.LogTrace("Details: {@details}", osuUserDetails);
202208
IReadOnlyCollection<SocketRole> guildRoles = user.Guild.Roles;
203209
// Find roles that user should have
204210
List<SocketRole> roles = OsuRoles.FindUserRoles(guildRoles, osuUserDetails);

OsuFriendsBot/Startup.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using OsuFriendsBot.Services;
99
using OsuFriendsDb.Services;
1010
using Serilog;
11+
using Serilog.Events;
1112
using Serilog.Sinks.SystemConsole.Themes;
1213
using System.IO;
1314
using System.Net.Http;
@@ -27,8 +28,8 @@ public Startup(string[] args)
2728

2829
Log.Logger = new LoggerConfiguration()
2930
.WriteTo.File(config.LogPath, rollingInterval: RollingInterval.Day)
30-
.WriteTo.Console(theme: AnsiConsoleTheme.Code)
31-
.MinimumLevel.Is(config.MinimumLevel)
31+
.WriteTo.Console(theme: AnsiConsoleTheme.Code, restrictedToMinimumLevel: config.MinimumLevel)
32+
.MinimumLevel.Is(LogEventLevel.Verbose)
3233
.CreateLogger();
3334
}
3435

OsuFriendsDb/OsuFriendsDb.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66

77
<ItemGroup>
88
<PackageReference Include="Discord.Net" Version="2.2.0" />
9-
<PackageReference Include="LiteDB" Version="5.0.8" />
10-
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0">
9+
<PackageReference Include="LiteDB" Version="5.0.9" />
10+
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0">
1111
<PrivateAssets>all</PrivateAssets>
1212
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1313
</PackageReference>
14-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.6" />
15-
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.6" />
14+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.7" />
15+
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.7" />
1616
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
1717
<PackageReference Include="Serilog" Version="2.9.0" />
1818
<PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />

0 commit comments

Comments
 (0)