aboutsummaryrefslogtreecommitdiffhomepage
path: root/frontend/app/.server/api/client.ts
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-08-01 21:13:11 +0900
committernsfisis <nsfisis@gmail.com>2024-08-01 21:13:11 +0900
commit94d5d89aa59b6d1e53dab280c26e3a8fcb22b7e4 (patch)
tree46872e86ed7e42962895e0bfe04064387487523f /frontend/app/.server/api/client.ts
parent7190fa225d1a559bacfb244fb1295e8bec246906 (diff)
downloadphperkaigi-2025-albatross-94d5d89aa59b6d1e53dab280c26e3a8fcb22b7e4.tar.gz
phperkaigi-2025-albatross-94d5d89aa59b6d1e53dab280c26e3a8fcb22b7e4.tar.zst
phperkaigi-2025-albatross-94d5d89aa59b6d1e53dab280c26e3a8fcb22b7e4.zip
refactor(frontend): provide simpler API client
Diffstat (limited to 'frontend/app/.server/api/client.ts')
-rw-r--r--frontend/app/.server/api/client.ts90
1 files changed, 88 insertions, 2 deletions
diff --git a/frontend/app/.server/api/client.ts b/frontend/app/.server/api/client.ts
index 8e50b7e..8f53b5b 100644
--- a/frontend/app/.server/api/client.ts
+++ b/frontend/app/.server/api/client.ts
@@ -1,9 +1,95 @@
import createClient from "openapi-fetch";
-import type { paths } from "./schema";
+import type { paths, operations } from "./schema";
-export const apiClient = createClient<paths>({
+const apiClient = createClient<paths>({
baseUrl:
process.env.NODE_ENV === "development"
? "http://localhost:8002/api/"
: "http://api-server/api/",
});
+
+export async function apiPostLogin(username: string, password: string) {
+ const { data, error } = await apiClient.POST("/login", {
+ body: { username, password },
+ });
+ if (error) throw new Error(error.message);
+ return data;
+}
+
+export async function apiGetGames(token: string) {
+ const { data, error } = await apiClient.GET("/games", {
+ params: {
+ header: { Authorization: `Bearer ${token}` },
+ },
+ });
+ if (error) throw new Error(error.message);
+ return data;
+}
+
+export async function apiGetGame(token: string, gameId: number) {
+ const { data, error } = await apiClient.GET("/games/{game_id}", {
+ params: {
+ header: { Authorization: `Bearer ${token}` },
+ path: { game_id: gameId },
+ },
+ });
+ if (error) throw new Error(error.message);
+ return data;
+}
+
+export async function apiGetToken(token: string) {
+ const { data, error } = await apiClient.GET("/token", {
+ params: {
+ header: { Authorization: `Bearer ${token}` },
+ },
+ });
+ if (error) throw new Error(error.message);
+ return data;
+}
+
+export async function adminApiGetUsers(token: string) {
+ const { data, error } = await apiClient.GET("/admin/users", {
+ params: {
+ header: { Authorization: `Bearer ${token}` },
+ },
+ });
+ if (error) throw new Error(error.message);
+ return data;
+}
+
+export async function adminApiGetGames(token: string) {
+ const { data, error } = await apiClient.GET("/admin/games", {
+ params: {
+ header: { Authorization: `Bearer ${token}` },
+ },
+ });
+ if (error) throw new Error(error.message);
+ return data;
+}
+
+export async function adminApiGetGame(token: string, gameId: number) {
+ const { data, error } = await apiClient.GET("/admin/games/{game_id}", {
+ params: {
+ header: { Authorization: `Bearer ${token}` },
+ path: { game_id: gameId },
+ },
+ });
+ if (error) throw new Error(error.message);
+ return data;
+}
+
+export async function adminApiPutGame(
+ token: string,
+ gameId: number,
+ body: operations["adminPutGame"]["requestBody"]["content"]["application/json"],
+) {
+ const { data, error } = await apiClient.PUT("/admin/games/{game_id}", {
+ params: {
+ header: { Authorization: `Bearer ${token}` },
+ path: { game_id: gameId },
+ },
+ body,
+ });
+ if (error) throw new Error(error.message);
+ return data;
+}