UNPKG

@portone/server-sdk

Version:

PortOne JavaScript SDK for server-side usage

71 lines (70 loc) 1.84 kB
import { AuthError } from "./AuthError.mjs"; import { USER_AGENT } from "../../client.mjs"; export function AuthClient(init) { const baseUrl = init.baseUrl ?? "https://api.portone.io"; const secret = init.secret; return { loginViaApiSecret: async (options) => { const { apiSecret } = options; const requestBody = JSON.stringify({ apiSecret }); const response = await fetch( new URL("/login/api-secret", baseUrl), { method: "POST", headers: { Authorization: `PortOne ${secret}`, "User-Agent": USER_AGENT }, body: requestBody } ); if (!response.ok) { throw new LoginViaApiSecretError(await response.json()); } return response.json(); }, refreshToken: async (options) => { const { refreshToken } = options; const requestBody = JSON.stringify({ refreshToken }); const response = await fetch( new URL("/token/refresh", baseUrl), { method: "POST", headers: { Authorization: `PortOne ${secret}`, "User-Agent": USER_AGENT }, body: requestBody } ); if (!response.ok) { throw new RefreshTokenError(await response.json()); } return response.json(); } }; } export class LoginViaApiSecretError extends AuthError { /** @ignore */ constructor(data) { super(data); Object.setPrototypeOf(this, LoginViaApiSecretError.prototype); this.name = "LoginViaApiSecretError"; } } export class RefreshTokenError extends AuthError { /** @ignore */ constructor(data) { super(data); Object.setPrototypeOf(this, RefreshTokenError.prototype); this.name = "RefreshTokenError"; } }