generated from VLADIMIR/template_frontend
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { createEveningDetectiveServerClient, type EveningDetectiveServer } from "./generated/crabs/evening_detective_server";
|
|
import { createHttpHandler } from "./generated/crabs/evening_detective_server/client";
|
|
|
|
|
|
export function buildAuthClient(
|
|
refreshTokens: () => Promise<boolean>,
|
|
getToken: () => string | null,
|
|
): EveningDetectiveServer {
|
|
return createEveningDetectiveServerClient(
|
|
createAuthHttpHandler(
|
|
refreshTokens,
|
|
createHttpHandler(
|
|
getToken,
|
|
)
|
|
)
|
|
)
|
|
}
|
|
|
|
function createAuthHttpHandler(
|
|
refreshTokens: () => Promise<boolean>,
|
|
handler: (request: { path: string, method: string, body: string | null }) => Promise<unknown>
|
|
): (request: { path: string, method: string, body: string | null }) => Promise<unknown> {
|
|
return async (
|
|
request: { path: string, method: string, body: string | null },
|
|
) => {
|
|
try {
|
|
return await handler(request)
|
|
} catch (error) {
|
|
await refreshTokens()
|
|
return await handler(request)
|
|
}
|
|
}
|
|
}
|