Description
HTTP range requests support multiple byte ranges. Could object_store?
object_store::GetOptions::range
could take, instead of a core::ops::Range
, something like this: https://github.com/clbarnes/byteranges-rs/blob/0a953e7c580e96b65fe28e61ed460d6e221dcd8d/src/request.rs#L53-L136 . Downstream users might need to add an extra .into::<Something>()
to get the first hop of getting a Range
into an HttpRange
(per #4611 ) into a RangeHeader
.
What is actually returned depends very much on the server, which, I think, means the only safe way to deal with the response is to have some representation of the whole file which you then only flesh out with the bits that the server sends back (which may be a single part, multiple parts, or the whole file). I have started work on a crate to deal with this: https://github.com/clbarnes/byteranges-rs/blob/main/src/response.rs which creates a Read
/Seek
able based on a rope containing a mixture of "filler" ranges and the actual response ranges.