diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-08-01 21:13:11 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-08-01 21:13:11 +0900 |
| commit | 94d5d89aa59b6d1e53dab280c26e3a8fcb22b7e4 (patch) | |
| tree | 46872e86ed7e42962895e0bfe04064387487523f /frontend/app/.server/api/client.ts | |
| parent | 7190fa225d1a559bacfb244fb1295e8bec246906 (diff) | |
| download | phperkaigi-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.ts | 90 |
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; +} |
