Ticket #53 (new task)

Opened 2 months ago

Last modified 2 months ago

Implement partial HTTP

Reported by: mgranger Assigned to: mgranger
Priority: minor Milestone: ThingFish 0.4 - The "Fish Is Murder" Release
Component: ThingFish Keywords: partial http fetch byterange content-range resume scrub
Cc: Depends on:

Description

To support resumable downloads and "scrubbing"-type usage, we need to implement partial fetches via support for the `Content-Range` header. This will require adding support for ranged fetches from the FileStore, but given that it should be pretty easy to implement. We'll probably make it an optional API, and just respond with a 501 NOT IMPLEMENTED.

Change History

07/02/08 08:28:08 changed by mahlon

There is some more to this than we originally anticipated, due to the complexities of the request Range header, and the possible responses including multipart/byterange.

Range: 0-499                  # => 500 bytes  (206)
Range: 0-499,500-520,521-600  # => contiguous 600 bytes (206)
Range: 0-499,550-600          # => non contiguous (206, but with multipart!)
Range: 500-0                  # => Range parse prob, ignore, send whole file (200)
Range: 0-1024 (on a 300 byte file) # => No good! Return (416)

On top of that, the range chunks also need to carry Etag/caching information.