sfs-express
Version:
Express.js implementation of SFS
3 lines (2 loc) • 2.89 kB
JavaScript
function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=/*#__PURE__*/e(require("sfs-node"));function t(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}module.exports=function(e){var i=e.logger,s=r.default({publicFolder:e.publicFolder,mask:e.mask,getFileById:e.getFileById,getFileByHash:e.getFileByHash,createFile:e.createFile,logger:i,allowDuplicates:e.allowDuplicates}),n=s.resolveFilePath,a=s.idToUrl,o=s.urlToId,l=s.saveFile,u=s.deleteFileByHash,d=s.deleteFileById,c=s.getDiskUsage,f=new Set;return{getFile:function(e,r){try{var s;return Promise.resolve(t(function(){if(s=a(e.params.id),i&&i("SFS Express: trying to return requested file: "+s,"info"),f.has(s))return r.status(428);var t=o(s);return Promise.resolve(n(t)).then(function(e){var t=e.filePath,s=e.fileName;return i&&i("SFS Express: sedning file '"+s+"' with path '"+t+"'"),r.setHeader("Content-Disposition",'inline; filename="'+s+'"'),r.status(200).sendFile(t)})},function(e){return i&&i("SFS Express: unable to return file:"+s),i&&i(e),r.status(404).send()}))}catch(e){return Promise.reject(e)}},idToUrl:a,urlToId:o,saveFile:l,prepareOptimisticUpload:function(e,r){try{var t=a(e.body.id);try{return f.add(t),Promise.resolve(r.status(200).send(t))}catch(e){return i&&i(e,"error"),Promise.resolve(r.status(500).send())}}catch(e){return Promise.reject(e)}},deleteFileByHash:u,deleteFileById:d,deleteFile:function(e,r){try{return Promise.resolve(t(function(){var t=a(e.params.id),i=o(t);return Promise.resolve(d(i)).then(function(){return r.status(200).send("ok")})},function(e){return i&&i(e,"error"),r.status(500).send()}))}catch(e){return Promise.reject(e)}},getDiskUsage:c,uploadFile:function(e,r,s){void 0===s&&(s={pathParamKey:"path",fileParamKey:"file",optimisticIdKey:"id",additionalFields:{}});try{if(!e.files)return Promise.resolve(r.status(400).send("Request doesn't contain any files"));var n,o=s.additionalFields,u=e.files[s.fileParamKey],d=e.body[s.pathParamKey],c=e.body[s.optimisticIdKey];return Promise.resolve(t(function(){return c&&(n=a(c)),Promise.resolve(l(u,{filePath:d,id:c,additionalFields:o})).then(function(e){return e&&n&&f.delete(n),r.status(200).send(e)})},function(e){return i&&i(e,"error"),n&&f.delete(n),r.status(500).send()}))}catch(e){return Promise.reject(e)}},uploadFiles:function(e,r,s){void 0===s&&(s={pathParamKey:"path"});try{if(!e.files)return Promise.resolve(r.status(400).send("Request doesn't contain any files"));var n=s.pathParamKey;return Promise.resolve(t(function(){var t=e.body[n],i=[];return Object.values(e.files).forEach(function(e){Array.isArray(e)?i.push.apply(i,e):i.push(e)}),Promise.resolve(Promise.all(i.map(function(e){return l(e,t)}))).then(function(e){return r.status(200).send(e)})},function(e){return i&&i(e,"error"),r.status(500).send()}))}catch(e){return Promise.reject(e)}}}};
//# sourceMappingURL=index.cjs.map