UNPKG

discord-authorize

Version:

A node module for easy authentication with Discord

80 lines 3.47 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const axios_1 = __importDefault(require("axios")); const errors_1 = require("../errors"); const getType_1 = __importDefault(require("../util/getType")); let baseURL = "https://discord.com/api/v10"; /** * Makes a request to the Discord API. * @private * @param {string} method - HTTP method. * @param {string} endpoint - API endpoint. * @param {AxiosRequestConfig} options - Request configuration options. * @returns {Promise<AxiosResponse>} - Response from the API. * @throws {Error} - If the request fails. */ async function request(method, endpoint, accessToken, options = {}) { if ((0, getType_1.default)(accessToken) !== "string") { const censoredAccessToken = accessToken.substring(0, 5) + "..."; throw new errors_1.InvalidAccessTokenError(`The access token: ${censoredAccessToken} is invalid`); } const headers = { ...(options.headers || {}), Authorization: `Bearer ${accessToken}`, }; const requestOptions = { ...options, method, url: `${baseURL}${endpoint}`, headers, }; if (method === "GET" && options.params) { requestOptions.params = options.params; } else if (["PUT", "POST", "PATCH"].includes(method)) { // For PUT, POST, and PATCH methods, pass the request data requestOptions.data = options.data; } try { const response = await axios_1.default.request(requestOptions); return response; } catch (error) { const errorMessage = errors_1.errorMessages[error?.response.status] || `Status ${error?.response.status} is not handled yet.`; const sEM = errors_1.statusCodedErrorMessages[error?.response.data.code]; if (error?.response.data && error?.response.data.message && error?.response.data.code === 0) { switch (error?.response.status) { case 401: throw new errors_1.InvalidAccessTokenError(`${errorMessage}`, JSON.stringify(error?.response.data)); case 404: throw new errors_1.NotFoundError(`${errorMessage}`, JSON.stringify(error?.response.data)); case 400: throw new errors_1.BadRequestError(`${errorMessage}`, JSON.stringify(error?.response.data)); case 429: throw new errors_1.RateLimitedError(`${errorMessage}`, JSON.stringify(error?.response.data)); case 500: throw new errors_1.DiscordAPIError(`${errorMessage}`, JSON.stringify(error?.response.data)); case 403: throw new errors_1.UnauthorizedError(`${errorMessage}`, JSON.stringify(error?.response.data)); default: throw new Error(`${errorMessage} Response Data: ${JSON.stringify(error?.response.data)}`); } } else if (error?.response.data && error?.response.data.message && error?.response.data.code !== 0) { throw new errors_1.DiscordAPIError(sEM, error?.response.data); } else { throw new Error(errorMessage); } } } exports.default = request; //# sourceMappingURL=requestHandler.js.map