Fix nullability

This commit is contained in:
x3rt
2023-04-26 19:35:07 -06:00
parent 15f3cf7603
commit 1283c16cf2
2 changed files with 16 additions and 10 deletions

View File

@@ -94,21 +94,26 @@ public class DiscordOAuth
return authToken; return authToken;
} }
private async Task<T> GetInformationAsync<T>(string accessToken, string endpoint) private async Task<T?> GetInformationAsync<T>(string accessToken, string endpoint) where T : class
{ {
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var response = await _httpClient.GetAsync($"https://discord.com/api/{endpoint}"); var response = await _httpClient.GetAsync($"https://discord.com/api/{endpoint}");
if (!response.IsSuccessStatusCode)
{
return null;
}
var responseString = await response.Content.ReadAsStringAsync(); var responseString = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(responseString) ?? default!; return JsonConvert.DeserializeObject<T?>(responseString) ?? null;
} }
private async Task<T?> GetInformationAsync<T>(HttpContext context, string endpoint) private async Task<T?> GetInformationAsync<T>(HttpContext context, string endpoint) where T : class
{ {
if (AccessToken is null) if (AccessToken is null)
{ {
if (!TryGetCode(context, out var code)) return default; if (!TryGetCode(context, out var code)) return null;
var accessToken = await GetTokenAsync(code!); var accessToken = await GetTokenAsync(code!);
if (accessToken is null) return default; if (accessToken is null) return null;
return await GetInformationAsync<T>(accessToken.AccessToken, endpoint); return await GetInformationAsync<T>(accessToken.AccessToken, endpoint);
} }
else else
@@ -117,7 +122,7 @@ public class DiscordOAuth
} }
} }
private async Task<T> GetInformationAsync<T>(OAuthToken token, string endpoint) private async Task<T?> GetInformationAsync<T>(OAuthToken token, string endpoint) where T : class
{ {
return await GetInformationAsync<T>(token.AccessToken, endpoint); return await GetInformationAsync<T>(token.AccessToken, endpoint);
} }
@@ -137,7 +142,7 @@ public class DiscordOAuth
return await GetInformationAsync<DiscordUser>(token, "users/@me"); return await GetInformationAsync<DiscordUser>(token, "users/@me");
} }
public async Task<DiscordGuild[]> GetGuildsAsync(string accessToken) public async Task<DiscordGuild[]?> GetGuildsAsync(string accessToken)
{ {
return await GetInformationAsync<DiscordGuild[]>(accessToken, "users/@me/guilds"); return await GetInformationAsync<DiscordGuild[]>(accessToken, "users/@me/guilds");
} }
@@ -147,12 +152,12 @@ public class DiscordOAuth
return await GetInformationAsync<DiscordGuild[]>(context, "users/@me/guilds"); return await GetInformationAsync<DiscordGuild[]>(context, "users/@me/guilds");
} }
public async Task<DiscordGuild[]> GetGuildsAsync(OAuthToken token) public async Task<DiscordGuild[]?> GetGuildsAsync(OAuthToken token)
{ {
return await GetInformationAsync<DiscordGuild[]>(token, "users/@me/guilds"); return await GetInformationAsync<DiscordGuild[]>(token, "users/@me/guilds");
} }
public async Task<DiscordConnection[]> GetConnectionsAsync(string accessToken) public async Task<DiscordConnection[]?> GetConnectionsAsync(string accessToken)
{ {
return await GetInformationAsync<DiscordConnection[]>(accessToken, "users/@me/connections"); return await GetInformationAsync<DiscordConnection[]>(accessToken, "users/@me/connections");
} }
@@ -162,7 +167,7 @@ public class DiscordOAuth
return await GetInformationAsync<DiscordConnection[]>(context, "users/@me/connections"); return await GetInformationAsync<DiscordConnection[]>(context, "users/@me/connections");
} }
public async Task<DiscordConnection[]> GetConnectionsAsync(OAuthToken token) public async Task<DiscordConnection[]?> GetConnectionsAsync(OAuthToken token)
{ {
return await GetInformationAsync<DiscordConnection[]>(token, "users/@me/connections"); return await GetInformationAsync<DiscordConnection[]>(token, "users/@me/connections");
} }

View File

@@ -14,6 +14,7 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile> <PackageLicenseFile>LICENSE</PackageLicenseFile>
<RepositoryUrl>https://github.com/x3rt/x3rt.DiscordOAuth2</RepositoryUrl> <RepositoryUrl>https://github.com/x3rt/x3rt.DiscordOAuth2</RepositoryUrl>
<RepositoryType>GIT</RepositoryType> <RepositoryType>GIT</RepositoryType>
<Version>1.0.1</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>