@bootpay/backend-js
Version:
Bootpay Server Side Package for Node.js
157 lines (156 loc) • 5.95 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BootpayCommerceResource = void 0;
const axios_1 = __importDefault(require("axios"));
class BootpayCommerceResource {
constructor() {
this.apiVersion = '1.0.0';
this.sdkVersion = '1.0.0';
this.mode = 'production';
this.$role = 'user';
this.$http = axios_1.default.create({
timeout: 60000
});
this.$token = undefined;
this.commerceConfiguration = {
client_key: '',
secret_key: '',
mode: 'production'
};
this.API_ENTRYPOINTS = {
development: 'https://dev-api.bootapi.com/v1',
stage: 'https://stage-api.bootapi.com/v1',
production: 'https://api.bootapi.com/v1'
};
this.$http.interceptors.response.use((response) => {
return response.data;
}, (error) => {
if (error.response !== undefined) {
return Promise.reject(error.response.data);
}
else {
return Promise.reject({
error: `Request Rest Api Failed to Bootpay Commerce Server, ${error.message}`
});
}
});
this.$http.interceptors.request.use((config) => {
config.headers.set('Content-Type', 'application/json');
config.headers.set('Accept', 'application/json');
config.headers.set('Accept-Charset', 'utf-8');
config.headers.set('BOOTPAY-SDK-VERSION', this.sdkVersion);
config.headers.set('BOOTPAY-API-VERSION', this.apiVersion);
config.headers.set('BOOTPAY-SDK-TYPE', '301');
config.headers.set('BOOTPAY-ROLE', this.$role || 'user');
if (this.$token !== undefined) {
config.headers.set('Authorization', `Bearer ${this.$token}`);
}
return config;
}, (error) => {
return Promise.reject(error);
});
}
setConfiguration(configuration) {
if (configuration.mode === undefined) {
configuration.mode = 'production';
}
this.commerceConfiguration = configuration;
}
setApiVersion(version) {
this.apiVersion = version;
}
setToken(token) {
this.$token = token;
}
getToken() {
return this.$token;
}
setRole(role) {
this.$role = role;
}
getRole() {
return this.$role;
}
getBasicAuthHeader() {
const { client_key, secret_key } = this.commerceConfiguration;
if (client_key && secret_key) {
const credentials = `${client_key}:${secret_key}`;
const encoded = Buffer.from(credentials).toString('base64');
return `Basic ${encoded}`;
}
return '';
}
entrypoints(url) {
const mode = this.commerceConfiguration.mode || 'production';
return [this.API_ENTRYPOINTS[mode], url].join('/');
}
get(url, config) {
return __awaiter(this, void 0, void 0, function* () {
try {
const response = yield this.$http.get(this.entrypoints(url), config);
return Promise.resolve(response);
}
catch (e) {
return Promise.reject(e);
}
});
}
post(url, data, config) {
return __awaiter(this, void 0, void 0, function* () {
try {
const response = yield this.$http.post(this.entrypoints(url), data, config);
return Promise.resolve(response);
}
catch (e) {
return Promise.reject(e);
}
});
}
postWithBasicAuth(url, data, config) {
return __awaiter(this, void 0, void 0, function* () {
try {
const authConfig = Object.assign(Object.assign({}, config), { headers: Object.assign(Object.assign({}, config === null || config === void 0 ? void 0 : config.headers), { Authorization: this.getBasicAuthHeader() }) });
const response = yield this.$http.post(this.entrypoints(url), data, authConfig);
return Promise.resolve(response);
}
catch (e) {
return Promise.reject(e);
}
});
}
put(url, data, config) {
return __awaiter(this, void 0, void 0, function* () {
try {
const response = yield this.$http.put(this.entrypoints(url), data, config);
return Promise.resolve(response);
}
catch (e) {
return Promise.reject(e);
}
});
}
delete(url, config) {
return __awaiter(this, void 0, void 0, function* () {
try {
const response = yield this.$http.delete(this.entrypoints(url), config);
return Promise.resolve(response);
}
catch (e) {
return Promise.reject(e);
}
});
}
}
exports.BootpayCommerceResource = BootpayCommerceResource;