UNPKG

lemoncloud-engine-js

Version:

lemoncloud.io - Lemon Engine Modle of Node for Robust Micro-service based on DynamoDB + ElastiCache + Elasticsearch.

1 lines 1.97 kB
"use strict";module.exports=function(r,e,i){e=e||"HS";var o=r.U,t=r._;if(!o)throw new Error("$U is required!");if(!t)throw new Error("$_ is required!");var c=o.NS(e,"magenta"),f=i,w=require("request"),a=require("query-string");if(!f)throw new Error("endpoint is required!");if(!w)throw new Error("request is required!");var n={endpoint:i},m=r.log,q=(r.inf,r.err);n.do_get=function(r,e,i,o,t){return t?Promise.reject(new Error(c+":$body is invalid!")):void 0===r?Promise.reject(new Error(c+":TYPE is required!")):s("GET",r,e,i,o,t)},n.do_put=function(r,e,i,o,t){return void 0===r?Promise.reject(new Error(c+":TYPE is required!")):void 0===e?Promise.reject(new Error(c+":ID is required!")):s("PUT",r,e,i,o,t)},n.do_post=function(r,e,i,o,t){return void 0===r?Promise.reject(new Error(c+":TYPE is required!")):void 0===e?Promise.reject(new Error(c+":ID is required!")):s("POST",r,e,i,o,t)},n.do_delete=function(r,e,i,o,t){return void 0===r?Promise.reject(new Error(c+":TYPE is required!")):void 0===e?Promise.reject(new Error(c+":ID is required!")):s("DELETE",r,e,i,o,t)},r(e,n);var s=function(r,e,i,o,t,n){if(!r)return Promise.reject(new Error(c+":METHOD is required!"));var s=t?a.stringify(t):"",d=f+(void 0===e?"":"/"+encodeURIComponent(e))+(void 0===i?"":"/"+encodeURIComponent(i))+(void 0===o?"":"/"+encodeURIComponent(o))+(s?"?"+s:""),u=w,E={method:r||"GET",uri:d,body:n,json:"string"!=typeof n};return m(c,"*",E.method,d),new Promise(function(s,d){u(E,function(r,e,i){if(r&&q(c,">>>>> requested! err=",r),r)return d(r);var o=e.statusCode,t=e.statusMessage;if(200!==o){if(400!==o&&404!==o)return m(c,"> code="+o+", msg="+t+", body=",i),d("string"==typeof(i=i||t)?new Error(i):i);var n=""+i;return d(new Error(0<=n.indexOf("404 NOT FOUND")?n:"404 NOT FOUND"))}try{i&&"string"==typeof i&&i.startsWith("{")&&i.endsWith("}")?i=JSON.parse(i):i&&"string"==typeof i&&i.startsWith("[")&&i.endsWith("]")&&(i=JSON.parse(i))}catch(r){q(c,"!WARN! parse =",r)}s(i)})})};return n};