portone-api-v2
Version:
PortOne REST API v2
74 lines • 2.46 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PortOneClient = void 0;
const axios_1 = __importDefault(require("axios"));
const qs_1 = __importDefault(require("qs"));
const lodash_1 = __importDefault(require("lodash"));
const constants_1 = require("./constants");
const jwt_1 = require("./utils/jwt");
class PortOneClient {
baseUrl;
apiSecret;
apiInstance;
token;
constructor({ apiSecret, axiosConfig }) {
this.apiSecret = apiSecret;
this.baseUrl = axiosConfig?.baseURL || constants_1.CONSTANT.BASE_URL;
this.token = {
accessToken: '',
refreshToken: '',
};
this.apiInstance = axios_1.default.create({
paramsSerializer: params => qs_1.default.stringify(params, { arrayFormat: 'brackets' }),
...axiosConfig,
baseURL: this.baseUrl,
});
}
getApiInstance() {
return this.apiInstance;
}
async setAuthorization() {
const isValid = await this.verifyToken();
return isValid ? {
Authorization: `Bearer ${this.token.accessToken}`,
} : {
Authorization: `PortOne ${this.apiSecret}`,
};
}
async verifyToken() {
try {
const { accessToken, refreshToken } = this.token;
if (jwt_1.Jwt.isValid(accessToken))
return true;
if (jwt_1.Jwt.isValid(refreshToken)) {
const { data } = await this.refreshToken();
this.token = lodash_1.default.assign({}, data);
return true;
}
const { data } = await this.issueToken();
this.token = lodash_1.default.assign({}, data);
return true;
}
catch (error) {
console.error(error);
return false;
}
}
async issueToken() {
const data = {
apiSecret: this.apiSecret,
};
return axios_1.default.post(`${this.baseUrl}/login/api-secret`, data);
}
async refreshToken() {
const data = {
refreshToken: this.token.refreshToken,
};
return axios_1.default.post(`${this.baseUrl}/token/refresh`, data);
}
}
exports.PortOneClient = PortOneClient;
//# sourceMappingURL=client.js.map