From bdc56e454a90d86c9f8a16113205d69553058625 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 18 Apr 2024 09:16:41 +0100 Subject: [PATCH] migrate to fetch --- package.json | 1 - pnpm-lock.yaml | 64 ---------------------------------------- src/common/WebRequest.ts | 45 +++++++++++++++------------- 3 files changed, 24 insertions(+), 86 deletions(-) diff --git a/package.json b/package.json index f73ae70..834eca5 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,6 @@ }, "license": "MIT", "dependencies": { - "axios": "^1.6.8", "jest": "^29.7.0", "ts-jest": "^29.1.2", "ts-node": "^10.9.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index efd57a8..37d1006 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,9 +5,6 @@ settings: excludeLinksFromLockfile: false dependencies: - axios: - specifier: ^1.6.8 - version: 1.6.8 jest: specifier: ^29.7.0 version: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2) @@ -796,20 +793,6 @@ packages: sprintf-js: 1.0.3 dev: false - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false - - /axios@1.6.8: - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} - dependencies: - follow-redirects: 1.15.6 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - dev: false - /babel-jest@29.7.0(@babel/core@7.24.4): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1009,13 +992,6 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: false - /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false @@ -1082,11 +1058,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false - /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -1193,25 +1164,6 @@ packages: path-exists: 4.0.0 dev: false - /follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false - - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false @@ -1907,18 +1859,6 @@ packages: braces: 3.0.2 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -2061,10 +2001,6 @@ packages: sisteransi: 1.0.5 dev: false - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false - /pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} dev: false diff --git a/src/common/WebRequest.ts b/src/common/WebRequest.ts index 417c8d2..2f9e354 100644 --- a/src/common/WebRequest.ts +++ b/src/common/WebRequest.ts @@ -1,4 +1,3 @@ -import axios from "axios"; import { McUtilsAPIError } from "../types/error"; export default class WebRequest { @@ -10,29 +9,33 @@ export default class WebRequest { */ public static get(url: string): Promise { return new Promise(async (resolve, reject) => { - const response = await axios.get(url, { - validateStatus: () => true, // Don't throw errors - headers: { - "User-Agent": "McUtils-JS-Library/1.0", - }, - }); + try { + const response = await fetch(url, { + headers: { + "User-Agent": "McUtils-JS-Library/1.0", + }, + }); - const data = response.data; + const data = await response.json(); - // Reject if the status code is not 200 - if (response.status !== 200) { - reject(data as McUtilsAPIError); - return; + // Reject if the status code is not 200 + if (!response.ok) { + reject(data as McUtilsAPIError); + return; + } + + // Resolve with a buffer if the content type is an image + if (response.headers.get("content-type")?.includes("image/")) { + const arrayBuffer = await response.arrayBuffer(); + resolve(Buffer.from(arrayBuffer) as unknown as T); + return; + } + + // Resolve with the data + resolve(data as T); + } catch (error) { + reject(error); } - - // Resolve with a buffer if the content type is an image - if (response.headers["content-type"].includes("image/")) { - resolve(Buffer.from(data, "utf-8") as unknown as T); - return; - } - - // Resolve with the data - resolve(data as T); }); } }