mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-08 20:20:47 +00:00
Pass start/end options down to the S3PersistorManager.
Test that those options cause a 'Range' header to be attached to the request sent to S3.
This commit is contained in:
parent
d88736e3b5
commit
76506ed91e
3 changed files with 26 additions and 3 deletions
services/filestore
app/coffee
test/unit/coffee
|
@ -27,6 +27,7 @@ module.exports =
|
|||
return callback err
|
||||
@sendFile location, target, fsPath, callback
|
||||
|
||||
# opts may be {start: Number, end: Number}
|
||||
getFileStream: (location, name, opts, _callback = (err, res)->) ->
|
||||
callback = (args...) ->
|
||||
_callback(args...)
|
||||
|
|
|
@ -58,14 +58,19 @@ module.exports =
|
|||
return callback(err)
|
||||
@sendFile bucketName, key, fsPath, callback
|
||||
|
||||
# opts may be {start: Number, end: Number}
|
||||
getFileStream: (bucketName, key, opts, callback = (err, res)->)->
|
||||
opts = opts || {}
|
||||
headers = {}
|
||||
if opts.start? and opts.end?
|
||||
headers['Range'] = "bytes=#{opts.start}-#{opts.end}"
|
||||
callback = _.once callback
|
||||
logger.log bucketName:bucketName, key:key, "getting file from s3"
|
||||
s3Client = knox.createClient
|
||||
key: settings.filestore.s3.key
|
||||
secret: settings.filestore.s3.secret
|
||||
bucket: bucketName
|
||||
s3Stream = s3Client.get(key)
|
||||
s3Stream = s3Client.get(key, headers)
|
||||
s3Stream.end()
|
||||
s3Stream.on 'response', (res) ->
|
||||
callback null, res
|
||||
|
|
|
@ -42,17 +42,34 @@ describe "S3PersistorManagerTests", ->
|
|||
describe "getFileStream", ->
|
||||
beforeEach ->
|
||||
@S3PersistorManager = SandboxedModule.require modulePath, requires: @requires
|
||||
|
||||
@opts = {}
|
||||
|
||||
it "should use correct key", (done)->
|
||||
@stubbedKnoxClient.get.returns(
|
||||
on:->
|
||||
end:->
|
||||
)
|
||||
@S3PersistorManager.getFileStream @bucketName, @key, @fsPath, (err)=>
|
||||
@S3PersistorManager.getFileStream @bucketName, @key, @opts, (err)=> # empty callback
|
||||
@stubbedKnoxClient.get.calledWith(@key).should.equal true
|
||||
done()
|
||||
|
||||
describe "with start and end options", ->
|
||||
beforeEach ->
|
||||
@opts =
|
||||
start: 0
|
||||
end: 8
|
||||
it "should pass headers to the knox.Client.get()", (done) ->
|
||||
@stubbedKnoxClient.get.returns(
|
||||
on:->
|
||||
end:->
|
||||
)
|
||||
@S3PersistorManager.getFileStream @bucketName, @key, @opts, (err)=> # empty callback
|
||||
@stubbedKnoxClient.get.calledWith(@key, {'Range': 'bytes=0-8'}).should.equal true
|
||||
done()
|
||||
|
||||
|
||||
|
||||
|
||||
describe "sendFile", ->
|
||||
|
||||
beforeEach ->
|
||||
|
|
Loading…
Add table
Reference in a new issue