UNPKG

3.59 kBJavaScriptView Raw
1const e=require("lodash"),t=require("../utils/files"),r=require("fs-extra"),i=require("path"),o=require("bluebird"),n=require("js-beautify"),s=require("../utils/messagehandler").messagesHandler;var a=r.readFileSync(i.join(CLI_PATH,"snippets","postman-action.js"),"utf8");function u(t){var r=e.get(t,"info.schema");return r?/v2.1.0/i.test(r)?o.resolve(!0):o.reject("Flow cli support Postman export v2.1.0 found "+r.match(/v[0-9].[0-9].[0-9]/).pop()):o.reject(s("POSTMAN_SCHEMA_ERROR"))}function c(e){r.ensureDirSync(i.join(config.APP_DIR,"action"));var t={};S(e).forEach(e=>{var r=p(e.name);t[r]=e});var n=Object.keys(t);process.stdout.write("[?25l");for(var a=0;a<n.length;a++)l(t[n[a]]);return process.stdout.write("[?25h"),process.stdout.clearLine(),Console.info(s("POSTMAN_SUCCESS",{total:n.length})),o.resolve(n)}function p(e){return e.trim().toLowerCase().replace(/[\W\s]+/g,"_")}function l(t){y(t.name);var i=f(t),o=g(t.request,t.name);r.ensureDirSync("./action/v1");var s=e.template(a)({label:t.name,name:t.name,input:JSON.stringify(o.properties,null,3),output:JSON.stringify({title:"Output",type:"object",properties:{}}),requestOption:`var option = ${JSON.stringify(i)}`,description:""});s=n.js_beautify(s),r.writeFileSync("./action/v1/"+p(t.name)+".js",s)}function y(e){process.stdout.write("Processing "+p(e)+" api\r")}function f(t){var r={},i=e.get(t,"request");return r.method=i.method,r.headers=h(i.header),m(r,i.body),r.url=i.url.protocol+"://"+i.url.host.join(".")+"/"+i.url.path.join("/"),r.qs=d(i),r}function m(e,t){if("GET"!=e.method)switch(t.mode){case"formdata":e.formData=h(t.formdata);break;case"raw":e.json=JSON.stringify({key:"value"})}}function d(e){return e.url.query&&e.url.query.length?h(e.url.query):{}}function h(e){var t={};return e.forEach(e=>t[e.key]=e.value),t}function g(t,r){var i={};if("raw"==t.body.mode)try{i=JSON.parse(t.body.raw)}catch(e){}return t.url.query&&t.url.query.length&&e.merge(i,h(t.url.query)),t.body.formdata&&e.merge(i,h(t.body.formdata)),j(i,r)}function j(t,r){var i={title:r,type:"object",properties:{}};for(var o in t)i.properties[o]={title:o,type:v(t[o])},"object"==v(t[o])&&(i.properties[o].properties={},Object.keys(t[o]).forEach(e=>{i.properties[o].properties[e]={title:e,type:v(t[o][e])}})),"array"==v(t[o])&&(i.properties[o].items={title:o,type:"object",properties:{}},e.merge(i.properties[o].items,b(t[o])));return i}function v(e){return Array.isArray(e)?"array":null===e?"string":typeof e}function b(t,r){var i={};if(t.length){if(!e.isObject(t[0]))return i={title:t[0],type:"string"};i.properties={},Object.keys(t[0]).forEach(e=>{i.properties[e]={title:e,type:v(t[0][e])},"object"===i.properties[e].type?i.properties[e].properties=b(t[0][e],!0):"array"===i.properties[e].type&&(i.properties[e].items={title:e,type:"string"})})}else r&&e.isObject(t)?e.keys(t).forEach(r=>{i[r]={title:r,type:"string",format:e.isObject(t[r])?"textarea":""}}):i={title:"items",type:"string"};return i}function O(e){return{type:"object",properties:{}}}function S(e){var t=[];return e.item.forEach(e=>{t=t.concat(e.item||e)}),t}module.exports=o.coroutine(function*(e){var n=null;try{r.statSync(e)}catch(t){return o.reject(s("POSTMAN_FILE_ERROR",{file:e}))}try{n=r.readJsonSync(e)}catch(e){return o.reject(s("POSTMAN_PARSE_ERROR"))}if(yield u(n),!n.hasOwnProperty("item")||!Array.isArray(n.item)||!n.item.length)return o.reject(s("INVALID_EXPORT"));let a=yield c(n);a=a.map(e=>"/v1/"+e);const p=yield t.getIndex();p.actions=p.actions?p.actions.concat(a):p.actions,r.writeFileSync(i.join(config.APP_DIR,"index.json"),JSON.stringify(p,null,2))});
\No newline at end of file