summaryrefslogtreecommitdiff
path: root/client/utils/use_api.js
diff options
context:
space:
mode:
Diffstat (limited to 'client/utils/use_api.js')
-rw-r--r--client/utils/use_api.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/client/utils/use_api.js b/client/utils/use_api.js
new file mode 100644
index 0000000..aab0293
--- /dev/null
+++ b/client/utils/use_api.js
@@ -0,0 +1,37 @@
+import { useRef } from 'react';
+
+export const useApi = (authToken) => {
+ const apiRef = useRef(new Api());
+ apiRef.current.authToken = authToken;
+ return apiRef.current;
+};
+
+export class Api {
+ authToken = null;
+
+ makeRequest(url, method, body) {
+ return fetch(url, {
+ method,
+ headers: {
+ Authorization: `Bearer ${this.authToken}`,
+ },
+ body,
+ }).then((res) => res.json());
+ }
+
+ get(url) {
+ return this.makeRequest(url, 'GET');
+ }
+
+ post(url, body = {}) {
+ return this.makeRequest(url, 'POST', body);
+ }
+
+ put(url, body = {}) {
+ return this.makeRequest(url, 'PUT', body);
+ }
+
+ del(url) {
+ return this.makeRequest(url, 'DELETE');
+ }
+}