import { BANK_OAUTH_CLIENT_ID, BANK_OAUTH_CLIENT_SECRET } from "../../config.ts" import { OAuthTokenResponse } from "@/bank/sparebank1.ts" const baseUrl = "https://api.sparebank1.no" type Success = { status: "success"; data: T } type Failure = { status: "failure"; data: T } type Result = Success | Failure function success(data: T): Success { return { status: "success", data: data } } function failure(data: T): Failure { return { status: "failure", data: data } } export async function refreshToken( refreshToken: string, ): Promise> { const queries = new URLSearchParams({ client_id: BANK_OAUTH_CLIENT_ID, client_secret: BANK_OAUTH_CLIENT_SECRET, refresh_token: refreshToken, grant_type: "refresh_token", }) const response = await fetch(`${baseUrl}/token?${queries}`) if (!response.ok) { return failure(response.statusText) } return success(await response.json()) }