From 23e657b56404a90e64cb8d52950726995464a8b6 Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Mon, 13 Nov 2023 11:48:40 +0100 Subject: [PATCH] Created the RequestUtil.js --- src/common/util/RequestUtil.js | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/common/util/RequestUtil.js diff --git a/src/common/util/RequestUtil.js b/src/common/util/RequestUtil.js new file mode 100644 index 0000000..e6db664 --- /dev/null +++ b/src/common/util/RequestUtil.js @@ -0,0 +1,47 @@ +// Get the default headers of the request +const getHeaders = () => { + return localStorage.getItem("token") === undefined ? {Authorization: "Basic " + localStorage.getItem("token")} : {}; +} + +// Run a plain request with all default values +export const request = async (path, method = "GET", body = {}, headers = {}, abort = true) => { + const controller = new AbortController(); + if (abort) setTimeout(() => {controller.abort()}, 10000); + + + return await fetch("/api" + path, { + headers: {"Content-Type": "application/json", ...getHeaders(), ...headers}, method, + body: method !== "GET" ? JSON.stringify(body) : null, + signal: controller.signal + }); +} + +// Run a GET request and get the json of the response +export const jsonRequest = async (path, headers = {}) => { + return (await request(path, "GET", null, headers)).json(); +} + +// Dispatches the provided command +export const dispatchCommand = (command) => { + return postRequest("console", {command}); +} + +// Run a POST request and post some values +export const postRequest = async (path, body = {}, headers = {}) => { + return await request(path, "POST", body, headers); +} + +// Run a PUT request update a resource +export const putRequest = async (path, body = {}, headers = {}) => { + return await request(path, "PUT", body, headers); +} + +// Run a PATCH request update a resource +export const patchRequest = async (path, body = {}, headers = {}) => { + return await request(path, "PATCH", body, headers); +} + +// Run a DELETE request and delete a resource +export const deleteRequest = async (path, body = {}, headers = {}) => { + return await request(path, "DELETE", body, headers); +} \ No newline at end of file