http-toolkit
Version:
Well-documented toolkit for making elegant HTTP requests with JavaScript
166 lines (147 loc) • 4.78 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.responseFunctions = void 0;
var _utils = require("../utils");
/**
* Response handlers
* @name HttpClient.ResponseHandlers
* @see ResponseHandlers
* @example const response = myClient.getAsync('/get').ifStatusThen(200, () => (response => console.log(response)))
*/
/**
* @interface ResponseHandlers
* @category HttpClient
*/
var responseFunctions = function responseFunctions(promise) {
return {
then: function then(handler) {
return promise.then(handler);
},
"catch": function _catch(handler) {
return promise["catch"](handler);
},
"finally": function _finally(handler) {
return promise["finally"](handler);
},
/**
* Returns body as an Object from JSON.
* @memberOf ResponseHandlers
*/
bodyToJson: function bodyToJson() {
return promise.then(function (response) {
return (0, _utils.bodyToJson)(response);
});
},
/**
* Returns body as a string/text
* @memberOf ResponseHandlers
*/
bodyToString: function bodyToString() {
return promise.then(function (response) {
return (0, _utils.bodyToString)(response);
});
},
/**
* Returns body as a new Object of class clazz
* @param {class} clazz - The class to convert body json to
* @memberOf ResponseHandlers
*/
bodyToClass: function bodyToClass(clazz) {
return promise.then(function (response) {
return (0, _utils.bodyToClass)(response, clazz);
});
},
/**
* Returns body as a Blob.
* @memberOf ResponseHandlers
*/
bodyToBlob: function bodyToBlob() {
return promise.then(function (response) {
return (0, _utils.bodyToBlob)(response);
});
},
/**
* Returns if Response.status is 200: OK.
* @memberOf ResponseHandlers
*/
isOk: function isOk() {
return promise.then(function (response) {
return (0, _utils.isResponseOk)(response);
});
},
/**
* Returns if Response.status equals status
* @param {number} status - HTTP status code to check against response
* @memberOf ResponseHandlers
*/
isStatus: function isStatus(status) {
return promise.then(function (response) {
return (0, _utils.isResponseStatus)(response, status);
});
},
/**
* Returns if Response.status is any of the provided statuses
* @param {Array<number>} statuses - HTTP status code to check against response
* @memberOf ResponseHandlers
*/
isStatusAnyOf: function isStatusAnyOf(statuses) {
return promise.then(function (response) {
return (0, _utils.isStatusAnyOf)(response, statuses);
});
},
/**
* Do handler if Response.status equals status
* @param {number} status - HTTP status code to check against response
* @param {function} handler - Do if true, (response => doSomething())
* @memberOf ResponseHandlers
*/
ifStatusThen: function ifStatusThen(status, handler) {
return doIf(function (response) {
return (0, _utils.isResponseStatus)(response, status);
}, handler, promise);
},
/**
* Do handler if Response.status does **not** equal status
* @param {number} status - HTTP status code to check against response
* @param {function} handler - Do if true, (response => doSomething())
* @memberOf ResponseHandlers
*/
ifStatusNotThen: function ifStatusNotThen(status, handler) {
return doIf(function (response) {
return !(0, _utils.isResponseStatus)(response, status);
}, handler, promise);
},
/**
* Check a predicate on the response and execute one of the handlers
* All params have signature: (response => doSomething())
* @param {function} predicate - The predicate to check if true
* @param {function} trueHandler - Do if true
* @param {function} falseHandler - Do if false
* @memberOf ResponseHandlers
*/
ifThenElse: function ifThenElse(predicate, trueHandler, falseHandler) {
return doIfElse(predicate, trueHandler, falseHandler, promise);
}
};
};
exports.responseFunctions = responseFunctions;
var doIf = function doIf(predicate, handler, promise) {
return promise.then(function (response) {
if (predicate(response)) {
handler(response);
}
return response;
});
};
var doIfElse = function doIfElse(predicate, trueHandler, falseHandler, promise) {
return promise.then(function (response) {
if (predicate(response)) {
trueHandler(response);
} else {
falseHandler(response);
}
return response;
});
};
;