| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- settings = require("settings-sharelatex")
- s3Wrapper = require("./s3Wrapper")
- LocalFileWriter = require("./LocalFileWriter")
- logger = require("logger-sharelatex")
- FileConverter = require("./FileConverter")
- KeyBuilder = require("./KeyBuilder")
- async = require("async")
- ImageOptimiser = require("./ImageOptimiser")
- module.exports =
- insertFile: (bucket, key, stream, callback)->
- convetedKey = KeyBuilder.getConvertedFolderKey(key)
- s3Wrapper.deleteDirectory bucket, convetedKey, ->
- s3Wrapper.sendStreamToS3 bucket, key, stream, ->
- callback()
- deleteFile: (bucket, key, callback)->
- convetedKey = KeyBuilder.getConvertedFolderKey(bucket, key)
- async.parallel [
- (done)-> s3Wrapper.deleteFile bucket, key, done
- (done)-> s3Wrapper.deleteFile bucket, convetedKey, done
- ], callback
- getFile: (bucket, key, opts = {}, callback)->
- logger.log bucket:bucket, key:key, opts:opts, "getting file"
- if !opts.format? and !opts.style?
- @_getStandardFile bucket, key, opts, callback
- else
- @_getConvertedFile bucket, key, opts, callback
- _getStandardFile: (bucket, key, opts, callback)->
- s3Wrapper.getFileStream bucket, key, (err, fileStream)->
- if err?
- logger.err bucket:bucket, key:key, opts:opts, "error getting fileStream"
- callback err, fileStream
- _getConvertedFile: (bucket, key, opts, callback)->
- convetedKey = KeyBuilder.addCachingToKey(key, opts)
- s3Wrapper.checkIfFileExists bucket, convetedKey, (err, exists)=>
- if exists
- s3Wrapper.getFileStream bucket, convetedKey, callback
- else
- @_getConvertedFileAndCache bucket, key, convetedKey, opts, callback
- _getConvertedFileAndCache: (bucket, key, convetedKey, opts, callback)->
- @_convertFile bucket, key, opts, (err, fsPath)->
- if err?
- logger.err err:err, fsPath:fsPath, bucket:bucket, key:key, opts:opts, "something went wrong with converting file"
- return callback(err)
- ImageOptimiser.compressPng fsPath, (err)->
- if err?
- logger.err err:err, fsPath:fsPath, bucket:bucket, key:key, opts:opts, "something went wrong optimising png file"
- return callback(err)
- s3Wrapper.sendFileToS3 bucket, convetedKey, fsPath, (err)->
- if err?
- logger.err err:err, bucket:bucket, key:key, convetedKey:convetedKey, opts:opts, "something went wrong seing file to s3"
- return callback(err)
- s3Wrapper.getFileStream bucket, convetedKey, callback
- _convertFile: (bucket, origonalKey, opts, callback)->
- @_writeS3FileToDisk bucket, origonalKey, (err, origonalFsPath)->
- if opts.format?
- FileConverter.convert origonalFsPath, opts.format, callback
- else if opts.style == "thumbnail"
- FileConverter.thumbnail origonalFsPath, callback
- else if opts.style == "preview"
- FileConverter.preview origonalFsPath, callback
- else
- throw new Error("should have specified opts to convert file with #{JSON.stringify(opts)}")
- _writeS3FileToDisk: (bucket, key, callback)->
- s3Wrapper.getFileStream bucket, key, (err, fileStream)->
- LocalFileWriter.writeStream fileStream, key, callback
|