UNPKG

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
"use strict"; 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;