lemoncloud-engine-js
Version:
lemoncloud.io - Lemon Engine Modle of Node for Robust Micro-service based on DynamoDB + ElastiCache + Elasticsearch.
1 lines • 3.34 kB
JavaScript
var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};module.exports=function(u,i){i=i||"PR";var c=u.U,e=u._;if(!c)throw new Error("$U is required!");if(!e)throw new Error("$_ is required!");var d=c.NS(i,"yellow"),p=require("query-string"),n=require("url"),f=u.log,r=(u.inf,u.err,{do_execute:function(e){return f(d,"do_execute_protocol()...."),e?y(e).then(s).then(function(e){var r=e.url||"";return t().do_get(l.type,"!","execute",{url:r})}):Promise.reject(new Error("url is required!"))},do_post_execute:function(e,r){return f(d,"do_post_execute_protocol()...."),e?y(e,r).then(s).then(function(e){var r=e.url||"",o=e.body||"";return t().do_post(l.type,"!","execute",{url:r},o)}):Promise.reject(new Error("url is required!"))},do_notify:function(e,r){return f(d,"do_notify_protocol()...."),e?y(e,"",r).then(s).then(function(e){var r=e.url||"",o=e.callback||"";return t().do_get(l.type,"!","notify",{url:r,callback:o})}):Promise.reject(new Error("url is required!"))},do_post_notify:function(e,r,o){return f(d,"do_post_notify_protocol()...."),e?y(e,r,o).then(s).then(function(e){return e.url,e.body,e.callback,t().do_post(l.type,"!","notify","",e)}):Promise.reject(new Error("url is required!"))},do_queue:function(e){return f(d,"do_queue_protocol()...."),e?y(e).then(s).then(function(e){var r=e.url||"";return t().do_get(l.type,"!","queue",{url:r})}):Promise.reject(new Error("url is required!"))},do_post_queue:function(e,r){return f(d,"do_post_queue_protocol()...."),e?y(e,r).then(s).then(function(e){var r=e.url||"",o=e.body||"";return t().do_post(l.type,"!","queue","",{url:r,body:o})}):Promise.reject(new Error("url is required!"))}});u(i,r);var l={type:""},t=function(){var e="X"+i,r=u(e);if(r)return r;var o=u.httpProxy;if(!o)throw new Error("httpProxy is required!");var t=c.env("PROTOCOL_PROXY_API");if(!t)throw new Error("env:PROTOCOL_PROXY_API is required!");var n=t.split("/");return l.type=n.pop(),l.host=n.join("/"),f(d,"proxy:"+i+" config. host=",l.host,", type=",l.type),o(u,e,l.host)},y=function(e,r,o){if(!e)return Promise.reject(new Error("url is required!"));var t={url:e&&"object"===(void 0===e?"undefined":_typeof(e))?_(e):e};return void 0!==r&&(t.body=r),void 0!==o&&(t.callback="object"===(void 0===o?"undefined":_typeof(o))?_(o):o),Promise.resolve(t)},s=function(e){var r=function(e){if("object"==(void 0===e?"undefined":_typeof(e)))return e;if("string"==typeof e)return n.parse(e,!1);throw new Error("Unknown data-type of url. type:"+(void 0===e?"undefined":_typeof(e)))}(e.url||""),o=r.protocol||"",t=r.hostname||"";return"lemon:"!=o?Promise.reject(new Error("protocol should be lemon:. but "+o)):t?e:Promise.reject(new Error(".service is required!"))};function _(e){var r=(e=e||{}).sid||e.SID,o=e.service||e.SERVICE,t=e.type||e.TYPE,n=e.id||e.ID,u=e.cmd||e.CMD,i=e.param||e.$param||e.PARAM,c="object"===(void 0===i?"undefined":_typeof(i))?p.stringify(i):i,d=e.body||e.$body||e.BODY,f="object"===(void 0===d?"undefined":_typeof(d))?p.stringify(d):d;return"lemon://"+(r?encodeURIComponent(r)+"@":"")+o+(t?"/"+encodeURIComponent(t):"/")+(n?"/"+encodeURIComponent(n):"")+(u?"/"+encodeURIComponent(u):"")+(c?"?"+c:"")+(f?"#"+f:"")}return r};
;