@wedevelop/mindbody-client
Version:
A MindBody v6 API Client
114 lines (96 loc) • 2.76 kB
JavaScript
;
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;