Home Reference Source Repository

src/request/plugins.js

/**
* Rquest middleware to format url with a base URL
*
* @params {string} base - Base URL for all requests.
* @returns {function}
*/
export var basePrefix = (base = '') => {
    return (request, next) => {
        let path = request.url.replace(/^\//, '');
        base = base.replace(/\/$/, '');

        request.url = `${base}/${path}`;

        return next();
    };
};

/**
 * Request middleware to handle response from api
 * and decide based on the status code if the
 * request was a success or an error
 *
 * @params {number} [lower=200]  - Lower status code number.
 * @params {number} [higher=299] - Higher status code number.
 * @returns {function}
 */
export var transformResponse = (lower = 200, higher = 299) => {
    return (request, next) => {
        return next().then((response) => {
            if (response.status >= lower &&
                response.status <= higher) {

                return response.body;
            }

            var error = request.error('', 'EINVALIDSTATUS');
            error.body = response.body;

            throw error.body;
        });
    };
};