diff --git a/DiscordOAuth.cs b/DiscordOAuth.cs index cf9ac3f..9db2274 100644 --- a/DiscordOAuth.cs +++ b/DiscordOAuth.cs @@ -94,21 +94,26 @@ public class DiscordOAuth return authToken; } - private async Task GetInformationAsync(string accessToken, string endpoint) + private async Task GetInformationAsync(string accessToken, string endpoint) where T : class { _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); var response = await _httpClient.GetAsync($"https://discord.com/api/{endpoint}"); + if (!response.IsSuccessStatusCode) + { + return null; + } + var responseString = await response.Content.ReadAsStringAsync(); - return JsonConvert.DeserializeObject(responseString) ?? default!; + return JsonConvert.DeserializeObject(responseString) ?? null; } - private async Task GetInformationAsync(HttpContext context, string endpoint) + private async Task GetInformationAsync(HttpContext context, string endpoint) where T : class { 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!); - if (accessToken is null) return default; + if (accessToken is null) return null; return await GetInformationAsync(accessToken.AccessToken, endpoint); } else @@ -117,7 +122,7 @@ public class DiscordOAuth } } - private async Task GetInformationAsync(OAuthToken token, string endpoint) + private async Task GetInformationAsync(OAuthToken token, string endpoint) where T : class { return await GetInformationAsync(token.AccessToken, endpoint); } @@ -137,7 +142,7 @@ public class DiscordOAuth return await GetInformationAsync(token, "users/@me"); } - public async Task GetGuildsAsync(string accessToken) + public async Task GetGuildsAsync(string accessToken) { return await GetInformationAsync(accessToken, "users/@me/guilds"); } @@ -147,12 +152,12 @@ public class DiscordOAuth return await GetInformationAsync(context, "users/@me/guilds"); } - public async Task GetGuildsAsync(OAuthToken token) + public async Task GetGuildsAsync(OAuthToken token) { return await GetInformationAsync(token, "users/@me/guilds"); } - public async Task GetConnectionsAsync(string accessToken) + public async Task GetConnectionsAsync(string accessToken) { return await GetInformationAsync(accessToken, "users/@me/connections"); } @@ -162,7 +167,7 @@ public class DiscordOAuth return await GetInformationAsync(context, "users/@me/connections"); } - public async Task GetConnectionsAsync(OAuthToken token) + public async Task GetConnectionsAsync(OAuthToken token) { return await GetInformationAsync(token, "users/@me/connections"); } diff --git a/x3rt.DiscordOAuth2.csproj b/x3rt.DiscordOAuth2.csproj index 08ba23a..5b1008d 100644 --- a/x3rt.DiscordOAuth2.csproj +++ b/x3rt.DiscordOAuth2.csproj @@ -14,6 +14,7 @@ LICENSE https://github.com/x3rt/x3rt.DiscordOAuth2 GIT + 1.0.1