From 04b2536aacf6a8f490f4c0beee6f1e38b45f7d2b Mon Sep 17 00:00:00 2001 From: AINDUSTRIES Date: Sun, 16 Mar 2025 23:42:23 +0100 Subject: [PATCH] Created client API helper --- app/api/client.ts | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 app/api/client.ts diff --git a/app/api/client.ts b/app/api/client.ts new file mode 100644 index 0000000..92d6e13 --- /dev/null +++ b/app/api/client.ts @@ -0,0 +1,53 @@ +interface paths { + "/item": { + parameters: { + query: { + uuid: string; + }; + }; + return: Item; + }; + "/items": { + parameters: { + query?: never; + }; + return?: never; + }; +} + +export interface Item { + id: number; + uuid: string; + name: string; + rarity: number; + price: number; + image: string; +} + +class Client { + baseUrl: string; + + constructor(baseUrl: string) { + this.baseUrl = baseUrl; + } + + GET( + path: T, + parameters: paths[T]["parameters"] + ): Promise { + let query = parameters["query"] + ? "?" + new URLSearchParams(parameters["query"]) + : ""; + return fetch(this.baseUrl + path + query, { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + // body: parameters ? JSON.stringify(parameters) : undefined, + }).then((response) => response.json()); + } +} + +const client = new Client("http://127.0.0.1:8000"); + +export default client;