handow-shm
Version:
E2E test server with Handow engine
1 lines • 2.68 kB
JavaScript
;const e=require("express"),s=require("path"),t=require("app-root-path"),r=require("../services/forbidEdit"),a=require("fs-extra");let o;try{o=require("fs/promises")}catch(e){o=require("fs").promises}const d=require("../services/srcTree"),u=e.Router();u.use((e,s,t)=>{try{const s=e.session.user&&e.session.user.role?e.session.user.role:"No_Role";if(r(e.query.path))throw new Error(`Not allowed to access [${e.query.path}]`);if("get"!==e.method.toLowerCase()&&"admin"!==s){const r=new Error(`Not allowed to [${e.method}] resource of "${e.baseUrl}/*" by [${s}]`);r.status="403",r.code="001",t(r)}t()}catch(s){e.exception={status:s.status?s.status:"400",errCode:s.code?s.code:"000",error:s.message?s.message:"Check permission failed"},t(s)}}),u.get("/srctree",(e,r,a)=>{try{const o=e.query.path?s.join(`${t}`,e.query.path):`${t}`,u=e.query.types&&""!==e.query.types&&"null"!==e.query.types?e.query.types:"_ALL_",c=!!e.query.emptyDir&&e.query.emptyDir,i=e.query.excludeDirs?e.query.excludeDirs:"",y=d(o,u,c,i);r.json({data:y,status:{statusCode:2e5,message:"success"}})}catch(s){e.exception={status:"400",errCode:"000",error:s.message?s.message:"Load resource tree failed"},a(s)}}),u.get("/read",async(e,s,t)=>{try{const r=await o.readFile(e.query.path,"utf8");s.status(200).json({data:r,status:{statusCode:"200000",message:"success"}})}catch(s){e.exception={status:"400",errCode:"000",error:s.message?s.message:"Read file failed"},t(s)}}),u.post("/add",async(e,s,t)=>{try{e.body&&"folder"===e.body.type?await o.mkdir(e.body.path):await o.writeFile(e.body.path,"Hello, new file"),s.status(201).json({data:e.body,status:{statusCode:201e3,message:"success"}})}catch(s){e.exception={status:"400",errCode:"000",error:s.message?s.message:"Create new file failed"},t(s)}}),u.post("/rename",async(e,s,t)=>{try{await o.rename(e.body.path,e.body.newPath),s.status(200).json({data:e.body,status:{statusCode:2e5,message:"success"}})}catch(s){e.exception={status:"400",errCode:"000",error:s.message?s.message:"Rename file failed"},t(s)}}),u.post("/remove",async(e,s,t)=>{try{e.body&&"folder"===e.body.type?await a.remove(e.body.path):await o.unlink(e.body.path),s.status(200).json({data:e.body,status:{statusCode:2e5,message:"success"}})}catch(s){e.exception={status:"400",errCode:"000",error:s.message?s.message:"Delete file failed"},t(s)}}),u.put("/update",async(e,s,t)=>{try{e.body&&e.body.path&&void 0!==e.body.data?await o.writeFile(e.body.path,e.body.data):(e.exception={status:"400",errCode:"000",error:"Data error"},t()),s.status(200).json({data:e.body,status:{statusCode:2e5,message:"success"}})}catch(s){e.exception={status:"400",errCode:"000",error:s},t(s)}}),module.exports=u;