UNPKG

gil.js

Version:

A powerful Node.js library for interacting with the Guilded API.

111 lines (110 loc) 4.45 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RESTManager = exports.RESTMethod = void 0; const BanRouter_1 = require("./routers/BanRouter"); const CategoryRouter_1 = require("./routers/CategoryRouter"); const ChannelRouter_1 = require("./routers/ChannelRouter"); const GroupRouter_1 = require("./routers/GroupRouter"); const MemberRouter_1 = require("./routers/MemberRouter"); const MessageRouter_1 = require("./routers/MessageRouter"); const ServerRouter_1 = require("./routers/ServerRouter"); const package_json_1 = __importDefault(require("../../package.json")); const AnnouncementRouter_1 = require("./routers/AnnouncementRouter"); const CalendarEventRouter_1 = require("./routers/CalendarEventRouter"); /** https://www.guilded.gg/docs/api/http_methods */ var RESTMethod; (function (RESTMethod) { RESTMethod["Get"] = "GET"; RESTMethod["Head"] = "HEAD"; RESTMethod["Post"] = "POST"; RESTMethod["Put"] = "PUT"; RESTMethod["Patch"] = "PATCH"; RESTMethod["Delete"] = "DELETE"; })(RESTMethod || (exports.RESTMethod = RESTMethod = {})); ; class RESTManager { constructor(options) { this.options = options; this.servers = new ServerRouter_1.ServerRouter(this); this.groups = new GroupRouter_1.GroupRouter(this); this.channels = new ChannelRouter_1.ChannelRouter(this); this.categories = new CategoryRouter_1.CategoryRouter(this); this.messages = new MessageRouter_1.MessageRouter(this); this.members = new MemberRouter_1.MemberRouter(this); this.bans = new BanRouter_1.BanRouter(this); this.announcements = new AnnouncementRouter_1.AnnouncementRouter(this); this.calendarEvents = new CalendarEventRouter_1.CalendarEventRouter(this); } ; get version() { return this.options.version || 1; } ; get url() { return this.options.url || `https://www.guilded.gg/api/v${this.version}`; } ; get(path) { return __awaiter(this, void 0, void 0, function* () { return this.request(path, RESTMethod.Get); }); } ; post(path, body) { return __awaiter(this, void 0, void 0, function* () { return this.request(path, RESTMethod.Post, body); }); } ; put(path, body) { return __awaiter(this, void 0, void 0, function* () { return this.request(path, RESTMethod.Put, body); }); } ; patch(path, body) { return __awaiter(this, void 0, void 0, function* () { return this.request(path, RESTMethod.Patch, body); }); } ; delete(path) { return __awaiter(this, void 0, void 0, function* () { return this.request(path, RESTMethod.Delete); }); } ; request(path, method, body) { return __awaiter(this, void 0, void 0, function* () { const response = yield fetch(this.url + path, { method, headers: { Authorization: `Bearer ${this.options.token}`, "User-Agent": `gil.js@${package_json_1.default.version} Node.js@${process.versions.node}`, "Content-Type": "application/json", }, body: body && method !== RESTMethod.Get ? JSON.stringify(body) : undefined, }); if (!response.ok) throw new Error("Response was not OK."); if (response.status === 204) return null; return response.json(); }); } ; } exports.RESTManager = RESTManager; ;