gil.js
Version:
A powerful Node.js library for interacting with the Guilded API.
111 lines (110 loc) • 4.45 kB
JavaScript
"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;
;