Files
discordeno/rest/processRequest.ts
Skillz4Killz 76ea7d9a67 Bucking Rest (#2588)
* Pending changes exported from your codespace

* fix: more testing needed

* fix: try fix

* fix: global shared scope erro

* fix: cleanup console logs
2022-11-14 12:17:29 -06:00

36 lines
1.2 KiB
TypeScript

import { BASE_URL } from "../util/constants.ts";
import { createQueueBucket } from "./createQueueBucket.ts";
import { RestPayload, RestRequest } from "./rest.ts";
import { RestManager } from "./restManager.ts";
/** Processes a request and assigns it to a queue or creates a queue if none exists for it. */
export function processRequest(rest: RestManager, request: RestRequest, payload: RestPayload) {
const route = request.url.substring(request.url.indexOf("api/"));
const parts = route.split("/");
// REMOVE THE API
parts.shift();
// REMOVES THE VERSION NUMBER
if (parts[0]?.startsWith("v")) parts.shift();
// SET THE NEW REQUEST URL
request.url = `${BASE_URL}/v${rest.version}/${parts.join("/")}`;
// REMOVE THE MAJOR PARAM
parts.shift();
const url = rest.simplifyUrl(request.url, request.method);
const queue = rest.pathQueues.get(url);
if (queue) {
queue.makeRequest({ request, payload });
} else {
// CREATES A NEW QUEUE
const bucketQueue = createQueueBucket(rest, {});
// Add request to queue
bucketQueue.makeRequest({
request,
payload,
});
// Save queue
rest.pathQueues.set(url, bucketQueue);
}
}