From 05e02ca04673c7db68f9c3c9d0a09e09c95a880a Mon Sep 17 00:00:00 2001 From: 0xjaqbek Date: Sat, 13 Jul 2024 21:01:33 +0200 Subject: [PATCH] gist11113 --- package-lock.json | 12 ++++++++++++ package.json | 1 + src/gistService.tsx | 36 ++++++++++++++++++++++++++---------- yarn.lock | 23 +++++++++++++++-------- 4 files changed, 54 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2516344..fe91989 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "vite-plugin-node-polyfills": "^0.7.0" }, "devDependencies": { + "@types/axios": "^0.14.0", "@types/node": "^18.11.18", "@types/react": "^18.0.27", "@types/react-dom": "^18.0.10", @@ -1364,6 +1365,17 @@ "integrity": "sha512-LwPdC5+CyYVqowiw3oxuHvL3F/oid72nFMqB+N+GyjwMhxKmwKtlMSBVKG5G1S3CNSwRUDZBFXOnukBvcC84/Q==", "license": "MIT" }, + "node_modules/@types/axios": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz", + "integrity": "sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ==", + "deprecated": "This is a stub types definition for axios (https://github.com/mzabriskie/axios). axios provides its own type definitions, so you don't need @types/axios installed!", + "dev": true, + "license": "MIT", + "dependencies": { + "axios": "*" + } + }, "node_modules/@types/eslint": { "version": "8.56.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", diff --git a/package.json b/package.json index 82e5d4c..2572f1d 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "vite-plugin-node-polyfills": "^0.7.0" }, "devDependencies": { + "@types/axios": "^0.14.0", "@types/node": "^18.11.18", "@types/react": "^18.0.27", "@types/react-dom": "^18.0.10", diff --git a/src/gistService.tsx b/src/gistService.tsx index 688c68f..6a2df4f 100644 --- a/src/gistService.tsx +++ b/src/gistService.tsx @@ -1,29 +1,41 @@ -import axios from 'axios'; +import axios, { AxiosError } from 'axios'; import dotenv from 'dotenv'; dotenv.config(); -const GIST_ID = 'c21b8e37060a00aadcae5f277543ef0c'; // Example Gist ID -const GITHUB_TOKEN = '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'; // Example GitHub Token +const GIST_ID = 'c21b8e37060a00aadcae5f277543ef0c'; +const GITHUB_TOKEN = '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'; + +if (!GITHUB_TOKEN) { + throw new Error('GitHub token not found. Please set the GITHUB_TOKEN environment variable.'); +} const apiClient = axios.create({ baseURL: 'https://api.github.com', headers: { - Authorization: `Bearer ${GITHUB_TOKEN}`, // Use "Bearer" instead of "token" + Authorization: `token ${GITHUB_TOKEN}`, // Use "token" instead of "Bearer" 'Content-Type': 'application/json', }, }); +const isAxiosError = (error: unknown): error is AxiosError => { + return axios.isAxiosError(error); +}; + export const getLeaderboard = async () => { try { console.log('Fetching leaderboard...'); const response = await apiClient.get(`/gists/${GIST_ID}`); - console.log('Response from GitHub API:', response); + console.log('Response from GitHub API:', response.data); const leaderboard = JSON.parse(response.data.files['leaderboard.json'].content); console.log('Leaderboard:', leaderboard); return leaderboard; - } catch (error) { - console.error('Error fetching leaderboard:', error); + } catch (error: unknown) { + if (isAxiosError(error)) { + console.error('Error fetching leaderboard:', error.response ? error.response.data : error.message); + } else { + console.error('Unexpected error fetching leaderboard:', error); + } return []; } }; @@ -40,10 +52,14 @@ export const updateLeaderboard = async (leaderboard: { address: string; time: nu }, }, }); - console.log('Response from GitHub API:', response); + console.log('Response from GitHub API:', response.data); return response.data; - } catch (error) { - console.error('Error updating leaderboard:', error); + } catch (error: unknown) { + if (isAxiosError(error)) { + console.error('Error updating leaderboard:', error.response ? error.response.data : error.message); + } else { + console.error('Unexpected error updating leaderboard:', error); + } return null; } }; diff --git a/yarn.lock b/yarn.lock index 1711bca..c243164 100644 --- a/yarn.lock +++ b/yarn.lock @@ -863,6 +863,13 @@ resolved "https://registry.npmjs.org/@twa-dev/types/-/types-6.4.2.tgz" integrity sha512-LwPdC5+CyYVqowiw3oxuHvL3F/oid72nFMqB+N+GyjwMhxKmwKtlMSBVKG5G1S3CNSwRUDZBFXOnukBvcC84/Q== +"@types/axios@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz" + integrity sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ== + dependencies: + axios "*" + "@types/eslint-scope@^3.7.3": version "3.7.7" resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" @@ -1153,14 +1160,7 @@ available-typed-arrays@^1.0.5: resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -axios@^0.25.0: - version "0.25.0" - resolved "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz" - integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== - dependencies: - follow-redirects "^1.14.7" - -axios@^1.7.2: +axios@*, axios@^1.7.2: version "1.7.2" resolved "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz" integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== @@ -1169,6 +1169,13 @@ axios@^1.7.2: form-data "^4.0.0" proxy-from-env "^1.1.0" +axios@^0.25.0: + version "0.25.0" + resolved "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz" + integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== + dependencies: + follow-redirects "^1.14.7" + "babel-plugin-styled-components@>= 1.12.0": version "2.0.7" resolved "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz"