2014-02-12 10:23:40 +00:00
logger = require ( " logger-sharelatex " )
fs = require ( " fs " )
request = require ( " request " )
settings = require ( " settings-sharelatex " )
2014-05-08 09:55:44 +00:00
oneMinInMs = 60 * 1000
fiveMinsInMs = oneMinInMs * 5
2014-02-12 10:23:40 +00:00
module.exports =
uploadFileFromDisk: (project_id, file_id, fsPath, callback)->
logger . log project_id : project_id , file_id : file_id , fsPath : fsPath , " uploading file from disk "
readStream = fs . createReadStream ( fsPath )
opts =
method: " post "
uri: @ _buildUrl ( project_id , file_id )
2014-05-08 09:55:44 +00:00
timeout : fiveMinsInMs
2014-02-12 10:23:40 +00:00
writeStream = request ( opts )
readStream . pipe writeStream
2014-02-14 18:13:22 +00:00
writeStream . on " end " , callback
2014-02-12 10:23:40 +00:00
readStream . on " error " , (err)->
logger . err err : err , project_id : project_id , file_id : file_id , fsPath : fsPath , " something went wrong on the read stream of uploadFileFromDisk "
callback err
writeStream . on " error " , (err)->
logger . err err : err , project_id : project_id , file_id : file_id , fsPath : fsPath , " something went wrong on the write stream of uploadFileFromDisk "
callback err
getFileStream: (project_id, file_id, query, callback)->
logger . log project_id : project_id , file_id : file_id , query : query , " getting file stream from file store "
queryString = " "
if query ? and query [ " format " ] ?
queryString = " ?format= #{ query [ ' format ' ] } "
opts =
method : " get "
uri: " #{ @ _buildUrl ( project_id , file_id ) } #{ queryString } "
2014-05-08 09:55:44 +00:00
timeout : fiveMinsInMs
2014-02-12 10:23:40 +00:00
readStream = request ( opts )
callback ( null , readStream )
deleteFile: (project_id, file_id, callback)->
logger . log project_id : project_id , file_id : file_id , " telling file store to delete file "
opts =
method : " delete "
uri: @ _buildUrl ( project_id , file_id )
2014-05-08 09:55:44 +00:00
timeout : fiveMinsInMs
2014-02-12 10:23:40 +00:00
request opts , (err, response)->
if err ?
logger . err err : err , project_id : project_id , file_id : file_id , " something went wrong deleting file from filestore "
callback ( err )
copyFile: (oldProject_id, oldFile_id, newProject_id, newFile_id, callback)->
logger . log oldProject_id : oldProject_id , oldFile_id : oldFile_id , newProject_id : newProject_id , newFile_id : newFile_id , " telling filestore to copy a file "
opts =
method : " put "
json:
source:
project_id : oldProject_id
file_id : oldFile_id
uri: @ _buildUrl ( newProject_id , newFile_id )
2014-05-08 09:55:44 +00:00
timeout : fiveMinsInMs
2014-02-12 10:23:40 +00:00
request opts , (err)->
if err ?
logger . err err : err , oldProject_id : oldProject_id , oldFile_id : oldFile_id , newProject_id : newProject_id , newFile_id : newFile_id , " something went wrong telling filestore api to copy file "
callback ( err )
_buildUrl: (project_id, file_id)->
return " #{ settings . apis . filestore . url } /project/ #{ project_id } /file/ #{ file_id } "