UNPKG

http-toolkit

Version:

Well-documented toolkit for making elegant HTTP requests with JavaScript

166 lines (147 loc) 4.78 kB
"use strict"; 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; }); };