UNPKG

celeritas

Version:

This is an API service framework which supports API requests over HTTP & WebSockets.

119 lines (100 loc) 2.54 kB
class CallUtilities { //Four possible statuses that a Call can be in. static get PENDING () { return 'Pending'; } static get READY () { return 'Ready'; } static get COMPLETE () { return 'Complete'; } static get ERROR () { return 'Error'; } //This method sorts how properties are returned in the output by alphabetical order. static _sortReturnData (obj) { var obj = JSON.parse(JSON.stringify(obj)); if (obj !== null && typeof obj === "object") { if (obj instanceof Array) { for (var i = 0; i < obj.length; i++) { obj[i] = CallUtilities._sortReturnData(obj[i]); } return obj; } else { var ret = {}; var keys = Object.keys(obj); keys.sort(); for (var i in keys) { if (i.indexOf("password") !== -1 && typeof obj[keys[i]] == "string") obj[keys[i]] = "********"; ret[keys[i]] = CallUtilities._sortReturnData(obj[keys[i]]); } return ret; } } else return obj; } static assembleCache (cacheControl) { var parts = cacheControl.split(","); var time = 0; for (var i in parts) { var part = parts[i].trim(); if (part.indexOf("max-age") !== -1) { try { time = part.split("=")[1]; } catch (err) {} } } return time; } static assemblePaging (queryData) { queryData = queryData || {}; var limit = parseInt(queryData.pagesize) || 0; var page = parseInt(queryData.page); if (!isNaN(page)) page--; else page = 0; var skip = page * limit; if (isNaN(page) || isNaN(limit)) return {limit: 0, skip: 0}; return { limit: limit, skip: skip }; } static assembleSort (queryData) { try { var sortData = JSON.parse(queryData.sort || "{}"); } catch (err) { var sortData = queryData.sort || {}; } return sortData; } static assembleAuth (auth) { if (!auth) return null; try { var supportedTypes = ['basic', 'bearer', 'apikey']; var authData = { authenticated: false, type: auth.split(" ").shift().toLowerCase(), raw: auth.split(" ").pop() }; if (supportedTypes.indexOf(authData.type) === -1) return null; try { var value = new Buffer(authData.raw, 'base64').toString(); } catch (err) { var value = null; } authData.value = value; if (authData.type.toLowerCase() == "basic") { authData.username = authData.value.split(":").shift(); authData.password = authData.value.split(":").pop(); } return authData; } catch (err) { return null; } } } module.exports = CallUtilities;