ekko-nodejs
Version:
Ekko Rest Api wrapper — nodeJs
34 lines (31 loc) • 3.25 kB
JavaScript
;
var _ = require("lodash");
var endpointParamRegExp = /\{(\w+?)\}/g;
function matchAll(str, re) {
var ret = [];
var m = void 0,
i = 0;
while (m = re.exec(str)) {
ret.push({
i: i++,
key: m[0],
name: m[1]
});
}
return ret;
}
module.exports = {
parse: function parse(endpoint) {
var template = _.template(endpoint, {
interpolate: endpointParamRegExp
});
return {
args: matchAll(endpoint, endpointParamRegExp),
compile: function compile(args) {
var params = _.zipObject(_.map(this.args, "name"), args);
return template(params);
}
};
}
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lbmRwb2ludFBhcnNlci5qcyJdLCJuYW1lcyI6WyJfIiwicmVxdWlyZSIsImVuZHBvaW50UGFyYW1SZWdFeHAiLCJtYXRjaEFsbCIsInN0ciIsInJlIiwicmV0IiwibSIsImkiLCJleGVjIiwicHVzaCIsImtleSIsIm5hbWUiLCJtb2R1bGUiLCJleHBvcnRzIiwicGFyc2UiLCJlbmRwb2ludCIsInRlbXBsYXRlIiwiaW50ZXJwb2xhdGUiLCJhcmdzIiwiY29tcGlsZSIsInBhcmFtcyIsInppcE9iamVjdCIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsSUFBTUEsSUFBSUMsUUFBUSxRQUFSLENBQVY7QUFDQSxJQUFNQyxzQkFBc0IsYUFBNUI7O0FBRUEsU0FBU0MsUUFBVCxDQUFrQkMsR0FBbEIsRUFBdUJDLEVBQXZCLEVBQTJCO0FBQ3ZCLFFBQU1DLE1BQU0sRUFBWjtBQUNBLFFBQUlDLFVBQUo7QUFBQSxRQUNJQyxJQUFJLENBRFI7QUFFQSxXQUFRRCxJQUFJRixHQUFHSSxJQUFILENBQVFMLEdBQVIsQ0FBWixFQUEyQjtBQUN2QkUsWUFBSUksSUFBSixDQUFTO0FBQ0xGLGVBQUdBLEdBREU7QUFFTEcsaUJBQUtKLEVBQUUsQ0FBRixDQUZBO0FBR0xLLGtCQUFNTCxFQUFFLENBQUY7QUFIRCxTQUFUO0FBS0g7QUFDRCxXQUFPRCxHQUFQO0FBQ0g7O0FBRURPLE9BQU9DLE9BQVAsR0FBaUI7QUFDYkMsU0FEYSxpQkFDUEMsUUFETyxFQUNHO0FBQ1osWUFBTUMsV0FBV2pCLEVBQUVpQixRQUFGLENBQVdELFFBQVgsRUFBcUI7QUFDbENFLHlCQUFhaEI7QUFEcUIsU0FBckIsQ0FBakI7QUFHQSxlQUFPO0FBQ0hpQixrQkFBTWhCLFNBQVNhLFFBQVQsRUFBbUJkLG1CQUFuQixDQURIO0FBRUhrQixtQkFGRyxtQkFFS0QsSUFGTCxFQUVXO0FBQ1Ysb0JBQU1FLFNBQVNyQixFQUFFc0IsU0FBRixDQUFZdEIsRUFBRXVCLEdBQUYsQ0FBTSxLQUFLSixJQUFYLEVBQWlCLE1BQWpCLENBQVosRUFBc0NBLElBQXRDLENBQWY7QUFDQSx1QkFBT0YsU0FBU0ksTUFBVCxDQUFQO0FBQ0g7QUFMRSxTQUFQO0FBT0g7QUFaWSxDQUFqQiIsImZpbGUiOiJlbmRwb2ludFBhcnNlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBfID0gcmVxdWlyZShcImxvZGFzaFwiKTtcbmNvbnN0IGVuZHBvaW50UGFyYW1SZWdFeHAgPSAvXFx7KFxcdys/KVxcfS9nO1xuXG5mdW5jdGlvbiBtYXRjaEFsbChzdHIsIHJlKSB7XG4gICAgY29uc3QgcmV0ID0gW107XG4gICAgbGV0IG0sXG4gICAgICAgIGkgPSAwO1xuICAgIHdoaWxlICgobSA9IHJlLmV4ZWMoc3RyKSkpIHtcbiAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgaTogaSsrLFxuICAgICAgICAgICAga2V5OiBtWzBdLFxuICAgICAgICAgICAgbmFtZTogbVsxXVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgcGFyc2UoZW5kcG9pbnQpIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSBfLnRlbXBsYXRlKGVuZHBvaW50LCB7XG4gICAgICAgICAgICBpbnRlcnBvbGF0ZTogZW5kcG9pbnRQYXJhbVJlZ0V4cFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IG1hdGNoQWxsKGVuZHBvaW50LCBlbmRwb2ludFBhcmFtUmVnRXhwKSxcbiAgICAgICAgICAgIGNvbXBpbGUoYXJncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IF8uemlwT2JqZWN0KF8ubWFwKHRoaXMuYXJncywgXCJuYW1lXCIpLCBhcmdzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGVtcGxhdGUocGFyYW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19