UNPKG

lightrail-client

Version:
63 lines (62 loc) 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatResponse = exports.isSuccessStatus = exports.formatFilterParams = exports.validateRequiredParams = void 0; const parseLinkHeader = require("parse-link-header"); exports.validateRequiredParams = (keys, params) => keys.every(key => { if (params[key] === undefined || params[key] === null) { throw new Error("params." + key + " not set"); } return !!params[key]; }); /** * Flattens one level deep and formats as key.subkey ie: {key:{subkey:4}} => {key.subkey:4} * @param {object} params * @returns {object} */ exports.formatFilterParams = (params) => { const formattedParams = {}; if (params) { for (const key in params) { if (typeof params[key] !== "object") { formattedParams[key] = params[key]; } else { for (const filterKey in params[key]) { if (params[key][filterKey] !== undefined) { formattedParams[key + "." + filterKey] = params[key][filterKey]; } } } } } return formattedParams; }; function isSuccessStatus(status) { return status >= 200 && status < 300; } exports.isSuccessStatus = isSuccessStatus; /** * Formats a response object into a standardized/predictable response, should be used to format all responses * @param {request.Response} response * @returns {LightrailResponse<T> | PaginatedLightrailResponse<T>} */ function formatResponse(response) { const lr = { body: (response.status !== 404) ? response.body : null, text: response.text, status: response.status }; if (response.header) { if (response.header["max-limit"] !== undefined) { lr.maxLimit = parseInt(response.header["max-limit"]); } if (response.header["limit"] !== undefined) { lr.limit = parseInt(response.header.limit); } if (response.header["link"] !== undefined) { lr.links = parseLinkHeader(response.header.link); } } return lr; } exports.formatResponse = formatResponse;