summary refs log tree commit diff
path: root/src/connections/GitHub/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/connections/GitHub/index.ts')
-rw-r--r--src/connections/GitHub/index.ts28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/connections/GitHub/index.ts b/src/connections/GitHub/index.ts
index ab3f8e65..aa686b03 100644
--- a/src/connections/GitHub/index.ts
+++ b/src/connections/GitHub/index.ts
@@ -1,4 +1,5 @@
 import {
+	ApiError,
 	Config,
 	ConnectedAccount,
 	ConnectedAccountCommonOAuthTokenResponse,
@@ -70,12 +71,18 @@ export default class GitHubConnection extends Connection {
 				Accept: "application/json",
 			},
 		})
-			.then((res) => res.json())
+			.then((res) => {
+				if (!res.ok) {
+					throw new ApiError("Failed to exchange code", 0, 400);
+				}
+
+				return res.json();
+			})
 			.catch((e) => {
 				console.error(
-					`Error exchanging token for ${this.id} connection: ${e}`,
+					`Error exchanging code for ${this.id} connection: ${e}`,
 				);
-				throw DiscordApiErrors.INVALID_OAUTH_TOKEN;
+				throw DiscordApiErrors.GENERAL_ERROR;
 			});
 	}
 
@@ -86,7 +93,20 @@ export default class GitHubConnection extends Connection {
 			headers: {
 				Authorization: `Bearer ${token}`,
 			},
-		}).then((res) => res.json());
+		})
+			.then((res) => {
+				if (!res.ok) {
+					throw new ApiError("Failed to fetch user", 0, 400);
+				}
+
+				return res.json();
+			})
+			.catch((e) => {
+				console.error(
+					`Error fetching user for ${this.id} connection: ${e}`,
+				);
+				throw DiscordApiErrors.GENERAL_ERROR;
+			});
 	}
 
 	async handleCallback(