UNPKG

4.06 kBJavaScriptView Raw
1const e=require("bluebird"),t=require("lodash"),r=require("./input");function n(e,t){for(i in e)e[i].type&&"object"===e[i].type&&(t[i]=e[i]),e[i]&&"object"==typeof e[i]&&n(e[i],t)}function p(e){switch(e){case"file":return"string";case"integer":return"number";default:return e}}function s(e){var t="option.body = {} \n";for(i in e){e[i];t+=`if(input["${i}"]) { option.body["${i}"] = input["${i}"] }\n`}return t}function o(e,t){var i={};return i.title=e,i.type=p(t.type),"file"===i.type&&(i.type="string"),i.description=t.description||"",t.required&&(i.required=t.required,i.minLength=1),"array"==t.type&&(i.items={type:p(t.items.type),title:e||"title",description:""}),t.enum&&(i.enum=t.enum),t.maxLength&&(i.maxLength=t.maximum),t.minLength&&(i.minLength=t.maximum),t.pattern&&(i.pattern=t.pattern),i}function a(e,t,r){for(i in e){var n=e[i];t[i]=o(i,n),r&&r.find(e=>e==i)&&(t[i].required=!0,t[i].minLength=1),"array"==n.type?"object"==n.items.type&&(t[i].items={type:"object",properties:{}},a(n.items.properties,t[i].items.properties,[])):"object"==n.type&&(t[i].properties={},a(n.properties,t[i].properties,[]))}}String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},module.exports.swagger2Config=e.coroutine(function*(t){var i="http";if(t.schemes.length>1){console.log("Select which scheme you would use"),console.log(t.schemes.map((e,t)=>t+1+") "+e).join("\n"));var n=yield r.getInput("Type the Index of scheme : ");if(!(i=t.schemes[parseInt(n)+1]))return void console.error("Plece select valid number")}else 1==t.schemes.length&&(i=t.schemes[0]);var p={url:i+"://"+t.host+(t.basePath||"")};return e.resolve(p)}),module.exports.swagger2Action=function(e){return Object.keys(e.paths).map(t=>Object.keys(e.paths[t]).map(i=>{var r={},n=e.paths[t][i];r.name=String(t.replace("/","").replaceAll("/","_").replaceAll("{","").replaceAll("}","")+"_"+i).toLowerCase(),r.label=n.summary?n.summary:n.operationId?n.operationId:String(t.replace("/","").replaceAll("/","_").replaceAll("{","").replaceAll("}","")+"_"+i).toLowerCase(),r.description=n.description?"sample description":n.summary,r.inputs={},r.requestOption=`\n var option = {\n method: "${i}",\n headers:{}\n };\n option.headers['Content-type'] = "application/json";\n option.json = true;\n `,r.uri="`"+t+"`";var u=!1;n.parameters&&n.parameters.length?(n.parameters.forEach(e=>{"body"==e.in?e.schema.properties&&"array"!==e.schema.properties.type?(r.requestOption+=s(e.schema.properties),a(e.schema.properties,r.inputs,e.schema.required||[])):(r.requestOption+="if(input.body) { option.body = input.body }\n",r.inputs.body={},r.inputs.body.type="array",r.inputs.body.name="body",r.inputs.body.title="body",r.inputs.body.items={type:p(e.schema.items?e.schema.items.type:e.schema.type),title:"items"},e.schema.items&&"object"===e.schema.items.type&&(r.inputs.body.items.properties={},a(e.schema.items.properties,r.inputs.body.items.properties,e.schema.items.required||[]))):"path"==e.in||"formData"==e.in||"query"==e.in?(r.inputs[e.name]=o(e.name,e),"query"==e.in?(u||(u=!0,r.requestOption+="option.qs = {};\n"),r.requestOption+=`if(input.${e.name}) option.qs.${e.name} = input.${e.name};\n`):"path"==e.in?r.uri=r.uri.replace(`{${e.name}}`,"${input."+e.name+"}"):e.in):"header"===e.in&&(r.requestOption+=`option.headers = {};\n if(input.auth){ option.headers["${e.name}"] = input.auth;}\n`)}),r.input=JSON.stringify(r.inputs,null,2)):r.input=JSON.stringify({}),r.output={};var m=e.paths[t][i].responses;if(m&&m[200]&&m[200].schema&&m[200].schema.properties)try{JSON.stringify(m[200].schema),a(m[200].schema.properties,r.output,[])}catch(e){}return r.output=JSON.stringify(r.output,null,2),r}))},module.exports.swagger2Auth=function(e){var t="apikey";for(var i in e.securityDefinitions)"http"===e.securityDefinitions[i].type&&"basic"===e.securityDefinitions[i].scheme&&(t="basic"),"oauth2"==e.type&&console.warn("Currently we don't support oauth2 authorisation, please contact flow team for oauth2 support");return t};
\No newline at end of file