channelape-sdk
Version:
A client for interacting with ChannelApe's API
65 lines • 2.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const channelape_logger_1 = require("channelape-logger");
class RequestLogger {
constructor(logLevel, endpoint) {
this.endpoint = endpoint;
this.logger = new channelape_logger_1.Logger('ChannelApe API', logLevel);
}
logCall(method, uriOrOptions, callbackOrOptionsOrUndefined) {
let methodToLog = '';
if (typeof method !== 'undefined') {
methodToLog = method.toUpperCase();
}
let uri;
let queryParams = '';
if (typeof uriOrOptions === 'string') {
uri = `${this.endpoint}${uriOrOptions}`;
if (typeof callbackOrOptionsOrUndefined !== 'undefined' && typeof callbackOrOptionsOrUndefined !== 'function') {
queryParams = this.getQueryParamString(callbackOrOptionsOrUndefined.qs);
}
}
else {
uri = `${this.endpoint}${uriOrOptions.uri.toString()}`;
queryParams = this.getQueryParamString(uriOrOptions.qs);
}
this.logger.info(`${methodToLog} ${uri}${queryParams} -- STARTED`);
}
logResponse(error, response, body) {
let errorMessage;
let infoMessage = '';
if (typeof response !== 'undefined' && typeof response.request !== 'undefined') {
if (!this.responseIsLevel200(response.statusCode)) {
const errorMessage = `${response.request.method} ${response.request.href} -- FAILED WITH STATUS: ${response.statusCode}`;
this.logger.error(errorMessage);
}
else {
infoMessage = `${response.request.method} ${response.request.href} -- COMPLETED`;
}
}
if (infoMessage !== '') {
this.logger.info(infoMessage);
}
if (error != null) {
errorMessage = error.message;
this.logger.error(errorMessage);
}
}
responseIsLevel200(statusCode) {
return (statusCode >= 200 && statusCode <= 299);
}
getQueryParamString(params) {
if (typeof params === 'undefined') {
return '';
}
if (Object.keys(params).length === 0) {
return '';
}
const queryParms = Object.keys(params).map((k) => {
return `${k}=${params[k]}`;
}).join('&');
return `?${queryParms}`;
}
}
exports.default = RequestLogger;
//# sourceMappingURL=RequestLogger.js.map