get: function(id, metadata){ //print("FileSystem get(): " + id); var filename,extraParts; var parts = getFilePathAndMetadata(id); extraParts = parts.extra; var fp= parts.file; try{ if (fs.statSync(filename).isFile()){ filename = fp; } }catch(e){ if (!options.defaultExtension) return; fp += options.defaultExtension ? ("."+options.defaultExtension):""; try { if (fs.statSync(fp).isFile()) { filename = fp; } }catch(e){ return; } } var extension = filename.match(/\.[^\.]+$/); var f = new BinaryFile(); f.forEach = function(callback){ var file = fs.open(filename, "br"); return file.forEach(callback); }; f.forEach.binary = true; f.getMetadata = function(){ return f; } var pathParts = filename.split("/") var fname = pathParts[pathParts.length-1]; Object.defineProperty(f,"alternates",{ value: [f] }); f.id = id; var explicitType = extraParts && extraParts[0]; var explicitDisposition = extraParts && extraParts[1]; if(!explicitDisposition && explicitType && explicitType.indexOf("/") == -1){ explicitDisposition = explicitType; explicitType = false; } f['content-type']= explicitType || MIME_TYPES[extension] ; f['content-disposition']= ((explicitDisposition && (explicitDisposition.charAt(0)=="a")) ? "attachment" : "inline") + "; filename=" + fname; f["content-length"]=fs.statSync(filename).size; return f; },
store.transaction= function(){ try{ var stat = fs.statSync(options.filename); }catch(e){ } if(stat && stat.mtime){ var fileTime = stat.mtime.getTime(); if(fileTime > lastMod){ lastMod = fileTime; var contents = fs.read(options.filename); if(contents){ var data = JSONExt.parse(contents); store.setIndex(data); } } } return { commit: function(){ fs.writeFileSync(options.filename, JSONExt.stringify(store.index)); }, abort: function(){ } }; };
store.getLastModified = function(){ try{ var stat = fs.statSync(options.filename); }catch(e){ print(e); } if(stat && stat.mtime){ return stat.mtime; } };