UNPKG

ekko-nodejs

Version:

Ekko Rest Api wrapper — nodeJs

41 lines (31 loc) 5.04 kB
"use strict"; var _ = require("lodash"); var endpointParser = require("./endpointParser"); var _require = require("../constants/requestTypes"), GET = _require.GET; module.exports = function makeAction(request, endpointPrefix, name, options) { var endpoint = endpointPrefix + options.endpoint; var controller = endpointParser.parse(endpoint); return function doAction() { var args = Array.prototype.slice.call(arguments); var hasPayload = _.isPlainObject(_.last(args)); var payload = hasPayload ? _.last(args) : null; var params = hasPayload ? _.initial(args) : args; if (params.length !== controller.args.length) { throw new Error("Invalid arguments number: [" + name + "] expects [" + controller.args.length + "] arguments but received [" + params.length + "]"); } var reqParams = { method: options.method, url: controller.compile(args) }; if (hasPayload) { if (options.method === GET) { reqParams.qs = payload; } else { reqParams.body = payload; } } return request(reqParams); }; }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tYWtlQWN0aW9uLmpzIl0sIm5hbWVzIjpbIl8iLCJyZXF1aXJlIiwiZW5kcG9pbnRQYXJzZXIiLCJHRVQiLCJtb2R1bGUiLCJleHBvcnRzIiwibWFrZUFjdGlvbiIsInJlcXVlc3QiLCJlbmRwb2ludFByZWZpeCIsIm5hbWUiLCJvcHRpb25zIiwiZW5kcG9pbnQiLCJjb250cm9sbGVyIiwicGFyc2UiLCJkb0FjdGlvbiIsImFyZ3MiLCJBcnJheSIsInByb3RvdHlwZSIsInNsaWNlIiwiY2FsbCIsImFyZ3VtZW50cyIsImhhc1BheWxvYWQiLCJpc1BsYWluT2JqZWN0IiwibGFzdCIsInBheWxvYWQiLCJwYXJhbXMiLCJpbml0aWFsIiwibGVuZ3RoIiwiRXJyb3IiLCJyZXFQYXJhbXMiLCJtZXRob2QiLCJ1cmwiLCJjb21waWxlIiwicXMiLCJib2R5Il0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxJQUFNQSxJQUFJQyxRQUFRLFFBQVIsQ0FBVjs7QUFFQSxJQUFNQyxpQkFBaUJELFFBQVEsa0JBQVIsQ0FBdkI7O2VBRWdCQSxRQUFRLDJCQUFSLEM7SUFBUkUsRyxZQUFBQSxHOztBQUVSQyxPQUFPQyxPQUFQLEdBQWlCLFNBQVNDLFVBQVQsQ0FBb0JDLE9BQXBCLEVBQTZCQyxjQUE3QixFQUE2Q0MsSUFBN0MsRUFBbURDLE9BQW5ELEVBQTREO0FBQ3pFLFFBQU1DLFdBQVdILGlCQUFpQkUsUUFBUUMsUUFBMUM7O0FBRUEsUUFBTUMsYUFBYVYsZUFBZVcsS0FBZixDQUFxQkYsUUFBckIsQ0FBbkI7O0FBRUEsV0FBTyxTQUFTRyxRQUFULEdBQW9CO0FBQ3ZCLFlBQU1DLE9BQU9DLE1BQU1DLFNBQU4sQ0FBZ0JDLEtBQWhCLENBQXNCQyxJQUF0QixDQUEyQkMsU0FBM0IsQ0FBYjtBQUNBLFlBQU1DLGFBQWFyQixFQUFFc0IsYUFBRixDQUFnQnRCLEVBQUV1QixJQUFGLENBQU9SLElBQVAsQ0FBaEIsQ0FBbkI7QUFDQSxZQUFNUyxVQUFVSCxhQUFhckIsRUFBRXVCLElBQUYsQ0FBT1IsSUFBUCxDQUFiLEdBQTRCLElBQTVDO0FBQ0EsWUFBTVUsU0FBU0osYUFBYXJCLEVBQUUwQixPQUFGLENBQVVYLElBQVYsQ0FBYixHQUErQkEsSUFBOUM7O0FBRUEsWUFBSVUsT0FBT0UsTUFBUCxLQUFrQmYsV0FBV0csSUFBWCxDQUFnQlksTUFBdEMsRUFBOEM7QUFDMUMsa0JBQU0sSUFBSUMsS0FBSixpQ0FDNEJuQixJQUQ1QixtQkFFRUcsV0FBV0csSUFBWCxDQUFnQlksTUFGbEIsa0NBRzJCRixPQUFPRSxNQUhsQyxPQUFOO0FBS0g7O0FBRUQsWUFBTUUsWUFBWTtBQUNkQyxvQkFBUXBCLFFBQVFvQixNQURGO0FBRWRDLGlCQUFLbkIsV0FBV29CLE9BQVgsQ0FBbUJqQixJQUFuQjtBQUZTLFNBQWxCOztBQUtBLFlBQUlNLFVBQUosRUFBZ0I7QUFDWixnQkFBSVgsUUFBUW9CLE1BQVIsS0FBbUIzQixHQUF2QixFQUE0QjtBQUN4QjBCLDBCQUFVSSxFQUFWLEdBQWVULE9BQWY7QUFDSCxhQUZELE1BRU87QUFDSEssMEJBQVVLLElBQVYsR0FBaUJWLE9BQWpCO0FBQ0g7QUFDSjs7QUFFRCxlQUFPakIsUUFBUXNCLFNBQVIsQ0FBUDtBQUNILEtBNUJEO0FBNkJILENBbENEIiwiZmlsZSI6Im1ha2VBY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuY29uc3QgXyA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5cbmNvbnN0IGVuZHBvaW50UGFyc2VyID0gcmVxdWlyZShcIi4vZW5kcG9pbnRQYXJzZXJcIik7XG5cbmNvbnN0IHsgR0VUIH0gPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL3JlcXVlc3RUeXBlc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtYWtlQWN0aW9uKHJlcXVlc3QsIGVuZHBvaW50UHJlZml4LCBuYW1lLCBvcHRpb25zKSB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBlbmRwb2ludFByZWZpeCArIG9wdGlvbnMuZW5kcG9pbnQ7XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gZW5kcG9pbnRQYXJzZXIucGFyc2UoZW5kcG9pbnQpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRvQWN0aW9uKCkge1xuICAgICAgICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgY29uc3QgaGFzUGF5bG9hZCA9IF8uaXNQbGFpbk9iamVjdChfLmxhc3QoYXJncykpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gaGFzUGF5bG9hZCA/IF8ubGFzdChhcmdzKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IGhhc1BheWxvYWQgPyBfLmluaXRpYWwoYXJncykgOiBhcmdzO1xuXG4gICAgICAgIGlmIChwYXJhbXMubGVuZ3RoICE9PSBjb250cm9sbGVyLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYEludmFsaWQgYXJndW1lbnRzIG51bWJlcjogWyR7bmFtZX1dIGV4cGVjdHMgWyR7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuYXJncy5sZW5ndGhcbiAgICAgICAgICAgICAgICB9XSBhcmd1bWVudHMgYnV0IHJlY2VpdmVkIFske3BhcmFtcy5sZW5ndGh9XWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXFQYXJhbXMgPSB7XG4gICAgICAgICAgICBtZXRob2Q6IG9wdGlvbnMubWV0aG9kLFxuICAgICAgICAgICAgdXJsOiBjb250cm9sbGVyLmNvbXBpbGUoYXJncylcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaGFzUGF5bG9hZCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubWV0aG9kID09PSBHRVQpIHtcbiAgICAgICAgICAgICAgICByZXFQYXJhbXMucXMgPSBwYXlsb2FkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXFQYXJhbXMuYm9keSA9IHBheWxvYWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVxdWVzdChyZXFQYXJhbXMpO1xuICAgIH07XG59O1xuIl19