-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support pathing semantics #82
Comments
The full pathing semantics requested for gateway traffic efficiently is at |
Mostly being done in #119 Current team understanding/agreement of what we're aiming for (initially at least) for Rhea:
|
|
What
Lassie should support the following semantics for paths, which match the gateway semantics:
This should return a CAR containing the blocks for CID, intermediate CIDs between the CID and the root CID of
file
, and all of the cids that make upfile
.This should return a CAR containing the blocks for CID, intermediate CIDs between the CID and the root CID of
subdir
, and all of the cids that make up the directory tree forsubdir
, but NOT any files or directories associated with subdir (ultimately this means just a single block unless the directory is a HAMT)This should return a CAR containing the blocks for CID, intermediate CIDs between the CID and the root CID of
subdir
, and all of the cids that make up the directory tree forsubdir
, AND any files or directories associated with subdir AND any additional subdirectories recursivelySelector conversion
I believe there is a relatively straight forward conversion between this structure and selectors:
For each segment of the path, I think we need an ExploreInterpretAs with KnownADL "unixfs" followed by an ExploreFields.
At the end of the path, I believe we want an ExploreInterpretAs "unixfs-preload" followed by a "Matcher" selector, except in the case of the
all
query parameter where I believe we can simply use an ExploreRecursiveAll selectorParamater passing
We will need to add either a path & query string to the RetrievalRequest type, or a selector -- it's kind of implementors choice and I'm not sure I have an opinion myself, though early conversion to selector locks us into selector traversal for bitswap (see https://github.com/ipfs/go-fetcher for what this ends up looking like)
The text was updated successfully, but these errors were encountered: