- From: Michael Toomim <toomim@gmail.com>
- Date: Thu, 25 Jul 2024 04:15:08 -0700
- To: Marius Kleidl <marius@transloadit.com>
- Cc: ietf-http-wg@w3.org
- Message-ID: <efb367a4-2abe-4daa-b94c-f0a62a3415ae@gmail.com>
Marius, these are excellent questions! I am answering them inline below: > 1. What is the parent version of a resource that a client is uploading > to? Requests have to set this header to ensure they are appending at > the correct offset, but I am wondering what parent version would be > included in responses to HEAD requests. The example responses in > section 3.3 always use the 0 byte count. Ah, yes... Well, the parent header is actually redundant in that case— so I'm removing it from the example. There, I think this <https://github.com/braid-org/braid-spec/commit/9e9485cdd4d2adcb0e7898b13919b06dc12ec496> is clearer now. How about you? > 2. Can a client upload from a streaming data source without knowing > the entire file size upfront? Is the including of the Current-Version > header mandatory when starting an upload? To best-support streaming resources of unknown length, we could articulate more into the Version-Type. For instance, we could define a special version ID called "end" that signals the end of a bytestream. Then the initial request might look like this: PUT /something Current-Version: "end" Version-Type: bytestream Content-Length: 900 <binary data of length 900> Then the client could break up the file into multiple requests, e.g. by choosing a smaller number than 900 above, like you ask here: > 4. Does the method allow the client to split an upload across multiple > requests? In our experience, servers can have an upper limit on the > size of a single request, which requires a client to split an upload > and send multiple consecutive requests to transfer the entire file. Good question! I had to think on my feet to answer this one. :) Finally, as for Content-Range: > 3. The example request for case B in section 3.3.2 includes the > Content-Range header, which appears redundant. Does its value carry > additional information that is not covered by Parents, Current-Version > or Content-Length? You're right that this is redundant information, but it might be useful for a Proxy that doesn't understand the bytestream version-type. It could still cache this range of the file! That's one of the cool things about re-using other headers and concepts. :) These are such illustrative questions! It's really nice talking to other people who think about these things. :) Thanks for doing so! Michael
Received on Thursday, 25 July 2024 11:15:14 UTC