@portone/server-sdk
Version:
PortOne JavaScript SDK for server-side usage
71 lines (70 loc) • 1.84 kB
JavaScript
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";
}
}