pulsar_sdk_js
Version:
A convenient way for you to interact with Pulsar's Third Party APIs, using typified classes.
55 lines (54 loc) • 2.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RestClient = void 0;
const axios_1 = __importDefault(require("axios"));
const helpers_1 = require("../utils/helpers");
const errors_1 = require("../types/errors");
class RestClient {
constructor(api_key, base_url, use_ssl) {
if (use_ssl) {
this.base_url = `https://${base_url}/v1/thirdparty`;
}
else {
this.base_url = `http://${base_url}/v1/thirdparty`;
}
this.auth_token = 'Bearer ' + api_key;
}
async _request(path, request_type, request_body = {}, kwargs = {}) {
const params_filtered = (0, helpers_1.filter_non_empty_params)(kwargs);
const formattedEndpointUrl = new URL(this.base_url + path);
if (Object.keys(params_filtered).length > 0) {
const searchParams = new URLSearchParams(Object.entries(params_filtered));
formattedEndpointUrl.search = searchParams.toString();
}
try {
const { data } = await axios_1.default.request({
method: request_type,
url: formattedEndpointUrl.toString(),
data: request_body,
headers: {
Authorization: this.auth_token,
},
});
return data;
}
catch (error) {
if (error instanceof axios_1.default.AxiosError) {
const { response } = error;
if (response) {
if (response.status === 500) {
throw new errors_1.ServerError(`Server error: ${JSON.stringify(response.data)}`);
}
throw new errors_1.APIError(`Error with status code ${response.status}: ${JSON.stringify(response.data)}`, response.status);
}
throw new Error(`Error with no response: ${error.message}`);
}
throw error;
}
}
}
exports.RestClient = RestClient;
exports.default = RestClient;