UNPKG

4.68 kBJavaScriptView Raw
1const e=require("bluebird"),r=require("lodash"),t=e.resolve,a=require("../utils"),i=require("fs-extra"),o=require("../utils/files"),s=require("../utils/api"),u=require("path"),d=require("../utils/credentials"),p=a.messagesHandler;function l(){return new e((e,t)=>{var a=[],o=i.readFileSync(u.join(config.APP_DIR,"oauth.json"),"utf8");if(!o)return t("Unable to find oauth.json in your connector directory");try{o=JSON.parse(o)}catch(e){t("Unable to parse oauth.json file\n"+e.stack)}o.consumerKey||a.push(p("OAUTH_MANDATORY_FIELD",{property:"consumerKey"})),o.consumerSecret||a.push(p("OAUTH_MANDATORY_FIELD",{property:"consumerSecret"})),o.signatureMethod||a.push(p("OAUTH_MANDATORY_FIELD",{property:"signatureMethod"})),o.authURL||a.push(p("OAUTH_MANDATORY_FIELD",{property:"authURL"})),o.requestURL||a.push(p("OAUTH_MANDATORY_FIELD",{property:"requestURL"})),o.accessURL||a.push(p("OAUTH_MANDATORY_FIELD",{property:"accessURL"})),o.validate||a.push(p("OAUTH_MANDATORY_FIELD",{property:"validate"})),o.validate.url||a.push(p("OAUTH_MANDATORY_FIELD",{property:"validate.url"})),o.validate.headers||o.validate.query||a.push(p("OAUTH_MANDATORY_FIELD",{property:"validate.headers or validate.query"})),o.validate.headers&&o.validate.query&&r.isEmpty(o.validate.headers)&&r.isEmpty(o.validate.query)&&a.push(p("OAUTH_EMPTY_FIELD",{property:"validate.headers or validate.query"})),o.validate.headers&&!o.validate.query&&r.isEmpty(o.validate.headers)&&a.push(p("OAUTH_EMPTY_FIELD",{property:"validate.headers"})),o.validate.query&&!o.validate.headers&&r.isEmpty(o.validate.query)&&a.push(p("OAUTH_EMPTY_FIELD",{property:"validate.query"})),o.authQueryParams&&c(o,"authQueryParams",a),a.length?e({errors:a}):e({valid:!0})})}function n(){return new e((e,t)=>{var a=[],o=i.readFileSync(u.join(config.APP_DIR,"oauth.json"),"utf8");if(!o)return t("Unable to find oauth.json in your connector directory");try{o=JSON.parse(o)}catch(e){t("Unable to parse oauth.json file\n"+e.stack)}o.clientId||a.push(p("OAUTH_MANDATORY_FIELD",{property:"clientId"})),o.clientSecret||a.push(p("OAUTH_MANDATORY_FIELD",{property:"clientSecret"})),o.authURL||a.push(p("OAUTH_MANDATORY_FIELD",{property:"authURL"})),o.tokenURL||a.push(p("OAUTH_MANDATORY_FIELD",{property:"requestURL"})),r.isObject(o.scope)||a.push(p("OAUTH_SCOPE_FAIL")),o.validate||a.push(p("OAUTH_MANDATORY_FIELD",{property:"validate"})),o.validate.url||a.push(p("OAUTH_MANDATORY_FIELD",{property:"validate.url"})),o.validate.headers||o.validate.query||a.push(p("OAUTH_MANDATORY_FIELD",{property:"validate.headers or validate.query"})),o.validate.headers&&o.validate.query&&r.isEmpty(o.validate.headers)&&r.isEmpty(o.validate.query)&&a.push(p("OAUTH_EMPTY_FIELD",{property:"validate.headers or validate.query"})),o.validate.headers&&!o.validate.query&&r.isEmpty(o.validate.headers)&&a.push(p("OAUTH_EMPTY_FIELD",{property:"validate.headers"})),o.validate.query&&!o.validate.headers&&r.isEmpty(o.validate.query)&&a.push(p("OAUTH_EMPTY_FIELD",{property:"validate.query"})),r.get(o,"requiredFields")&&o.requiredFields.length&&(r.every(o.requiredFields,r.isPlainObject)||a.push(p("OAUTH_REQUIRED_INVALID"))),c(o,"authQueryParams",a),c(o,"tokenParams",a),c(o,"refreshParams",a),a.length?e({errors:a}):e({valid:!0})})}function h(r){return e.coroutine(function*(){switch(r){case"oauth1":return(t=yield l()).errors?e.reject("\n"+t.errors.join("\n")):e.resolve(t);case"oauth2":var t;return(t=yield n()).errors?e.reject("\n"+t.errors.join("\n")):e.resolve(t)}})().catch(r=>e.reject(r))}function c(e,t,a){e[t]&&(r.isPlainObject(e[t])||a.push(`${t} key should be plain object`))}module.exports=((r,t)=>(a.printMessage(p("OAUTH_DEPLOY")),e.coroutine(function*(){if("deploy"!==r)return e.reject(p("INVALID_OAUTH_PARAM"));const t=u.join(config.APP_DIR,"oauth.json");if(!i.existsSync(t))return e.reject(p("OAUTH_FILE_ERROR"));var l=yield o.readFile(t);try{l=JSON.parse(l.toString())}catch(r){return e.reject(p("OAUTH_PARSE_ERROR"))}var n=yield d.checkCredentials();if(!n)return e.reject(p("UNAUTHORIZED"));yield h(l.type);const c=yield o.getIndex();if(!c.oauth_provider)return e.reject("Missing oauth_provider key in index.json");l.provider=c.oauth_provider,l.icon=c.icon||"",l.category=c.name;const y={body:l,method:"POST",headers:{accesstoken:n}};yield s.makeApiCall("/oauth/deploy",y);a.printDone(),Console.info(p("OAUTH_DEPLOY_SUCCESS",{name:c.oauth_provider}))})().catch(r=>e.reject(r)))),module.exports.argSpecs=[{parameter:"deploy"}],module.exports.argSpecs=[{parameter:"deploy",required:!0}],module.exports.argOptionsSpecs={},module.exports.help="Deploy the custom oauth to built flow",module.exports.snippet="flow oauth deploy",module.exports.docs="";
\No newline at end of file