UNPKG

@wedevelop/mindbody-client

Version:
114 lines (96 loc) 2.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lodash = require("lodash"); var _axios = _interopRequireDefault(require("axios")); var _util = _interopRequireDefault(require("util")); var _Pagination = _interopRequireDefault(require("./Pagination")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const DEFAULT_PARAMS = { baseURL: 'https://api.mindbodyonline.com/public/v6', contentType: 'application/json', requestTimeout: 0, enableTestMode: false, enableRequestLogging: false, requestLoggingDepth: 2, enableRequestLoggingInOneLine: true, paginationLimit: 100, maxContentLength: 4000000 // 4 MB }; class BaseClient { constructor(params) { params = (0, _lodash.defaults)(params, DEFAULT_PARAMS); this.httpClient = _axios.default.create({ baseURL: params.baseURL, headers: { 'Api-Key': params.apiKey, SiteId: params.siteId, 'Content-Type': params.contentType, Test: params.enableTestMode }, params: { Limit: params.paginationLimit }, timeout: params.requestTimeout, maxContentLength: params.maxContentLength }); if (params.enableRequestLogging) { this._setupRequestLogging(params); } } _setupRequestLogging({ requestLoggingDepth, enableRequestLoggingInOneLine }) { const inspectConfig = { compact: enableRequestLoggingInOneLine ? true : undefined, breakLength: enableRequestLoggingInOneLine ? Infinity : undefined, depth: requestLoggingDepth }; this.httpClient.interceptors.request.use(function (config) { console.log('MINDBODY_CLIENT:REQUEST:', _util.default.inspect(config, inspectConfig)); return config; }); this.httpClient.interceptors.response.use(function (response) { console.log('MINDBODY_CLIENT:RESPONSE:', _util.default.inspect(response, inspectConfig)); return response; }); } async doRequest(config) { try { const response = await this.httpClient(config); return new _Pagination.default(this, config, response.data); } catch (err) { this._handleError(err); } } _handleError(err) { if (err.response) this._handleAPIError(err);else throw err; } _handleAPIError(err) { const { Error } = err.response.data; err.code = Error.Code; err.message = Error.Message; throw err; } get(url, config) { return this.doRequest({ url, method: 'GET', ...config }); } post(url, data, config) { return this.doRequest({ url, data, method: 'POST', ...config }); } } exports.default = BaseClient;