diff options
Diffstat (limited to 'frontend/app/.server')
| -rw-r--r-- | frontend/app/.server/api/client.ts | 90 | ||||
| -rw-r--r-- | frontend/app/.server/auth.ts | 13 |
2 files changed, 90 insertions, 13 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; +} diff --git a/frontend/app/.server/auth.ts b/frontend/app/.server/auth.ts index b80166b..b7e1820 100644 --- a/frontend/app/.server/auth.ts +++ b/frontend/app/.server/auth.ts @@ -3,22 +3,13 @@ import { FormStrategy } from "remix-auth-form"; import { jwtDecode } from "jwt-decode"; import type { Session } from "@remix-run/server-runtime"; import { sessionStorage } from "./session"; -import { apiClient } from "./api/client"; +import { apiPostLogin } from "./api/client"; import { components } from "./api/schema"; export const authenticator = new Authenticator<string>(sessionStorage); async function login(username: string, password: string): Promise<string> { - const { data, error } = await apiClient.POST("/login", { - body: { - username, - password, - }, - }); - if (error) { - throw new Error(error.message); - } - return data.token; + return (await apiPostLogin(username, password)).token; } authenticator.use( |
