sfs-express
Version:
Express.js implementation of SFS
3 lines (2 loc) • 3.2 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("sfs-node")):"function"==typeof define&&define.amd?define(["sfs-node"],t):(e||self).sfsExpress=t(e.sfsNode)}(this,function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=/*#__PURE__*/t(e);function i(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}return function(e){var t=e.logger,s=r.default({publicFolder:e.publicFolder,mask:e.mask,getFileById:e.getFileById,getFileByHash:e.getFileByHash,createFile:e.createFile,logger:t,allowDuplicates:e.allowDuplicates}),n=s.resolveFilePath,o=s.idToUrl,a=s.urlToId,l=s.saveFile,u=s.deleteFileByHash,d=s.deleteFileById,f=s.getDiskUsage,c=new Set;return{getFile:function(e,r){try{var s;return Promise.resolve(i(function(){if(s=o(e.params.id),t&&t("SFS Express: trying to return requested file: "+s,"info"),c.has(s))return r.status(428);var i=a(s);return Promise.resolve(n(i)).then(function(e){var s=e.filePath,n=e.fileName;return t&&t("SFS Express: sedning file '"+n+"' with path '"+s+"'"),r.setHeader("ETag",'"'+i+'"'),r.setHeader("Content-Disposition",'inline; filename="'+n+'"'),r.status(200).sendFile(s,{lastModified:!0,headers:{"Cache-Control":"public, max-age=31536000, immutable"}})})},function(e){return t&&t("SFS Express: unable to return file:"+s),t&&t(e),r.status(404).send()}))}catch(e){return Promise.reject(e)}},idToUrl:o,urlToId:a,saveFile:l,prepareOptimisticUpload:function(e,r){try{var i=o(e.body.id);try{return c.add(i),Promise.resolve(r.status(200).send(i))}catch(e){return t&&t(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(i(function(){var t=o(e.params.id),i=a(t);return Promise.resolve(d(i)).then(function(){return r.status(200).send("ok")})},function(e){return t&&t(e,"error"),r.status(500).send()}))}catch(e){return Promise.reject(e)}},getDiskUsage:f,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,a=s.additionalFields,u=e.files[s.fileParamKey],d=e.body[s.pathParamKey],f=e.body[s.optimisticIdKey];return Promise.resolve(i(function(){return f&&(n=o(f)),Promise.resolve(l(u,{filePath:d,id:f,additionalFields:a})).then(function(e){return e&&n&&c.delete(n),r.status(200).send(e)})},function(e){return t&&t(e,"error"),n&&c.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(i(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 t&&t(e,"error"),r.status(500).send()}))}catch(e){return Promise.reject(e)}}}}});
//# sourceMappingURL=index.umd.js.map