boxo
boxo copied to clipboard
gateway: support for UnixFS 1.5 Last-Modified/If-Modified-Since with remote CAR backend
https://github.com/ipfs/boxo/pull/659 introduced support for returning optional UnixFS 1.5 mtime value as Last-Modified header, and returning 304 Not Modified if it is matching If-Modified-Since sent with a file request.
This
- :green_circle: works with
gateway/backend_blocks.go(used by Kubo and Rainbow) - :construction: but does not work with
gateway/backend_car.go(used in boxo/gateway conformance tests here and in Rainbow withRAINBOW_REMOTE_BACKENDS_MODE=car)
Remaining work here:
- [ ] prerequisites
- [ ] figure out what is missing in
loadTerminalEntityfromgateway/backend_car.goto be able to readmtimefrom the root dag-pb block of requested file, update any upstream libraries if necessary
- [ ] figure out what is missing in
- [ ] car backend
- [ ] return
Last-Modifiedon deserialized GET responses - [ ] return
Last-Modifiedon deserialized HEAD responses - [ ] 304 Not Modified on matching
If-Modified-Since(UnixFS 1.5 file only)
- [ ] return
- [ ] add gateway-conformance test for unixfs 1.5 and release it as new major version
- [ ] confirm conformance passes with all backends (remote car uses different implementation of
GetandHeadandContentPathMetadataneeds to be updated there as well -- this is why conformance tests need to be added after we have car backend implemented first)
- [ ] confirm conformance passes with all backends (remote car uses different implementation of