1.5 KiB
BUD-04
Efficiently mirroring blobs
draft optional
If a server supports the /upload endpoint defined in BUD-02 it MAY also support an optional url query parameter in the URL ( eg. /upload?url=https://cdn.satellite.earth/b1674191a88ec5cdd733e4240a81803105dc412d6c6708d53ab94fc248f4f553.pdf )
If the url query parameter is specified the server MUST ignore the body and Content-Type of the request and download the raw binary blob data from the URL
The server MUST verify the sha256 hash of the downloaded blob matches the x tag in the upload authorization event
The server should re-use the Content-Type header returned from the URL to know the mime type of the blob. if none is returned it may use the file extension in the URL
The endpoint MUST return a Blob Descriptor if the mirroring was successful or an error object if it was not
If no url query parameter is specified the server MUST follow the rules layed out in BUD-02
Example Flow
- Client requests lists of blobs from Server A
- Client signs an upload auth event for X
- Client makes request
https://cdn.server-b.com/upload?url=https://cdn.server-a.com/<sha256>.pngwith authorization header - Server B receives request
- Server B downloads blob from Server A using url query parameter
- Server B verifies downloaded blob hash matches
xtag in authorization header - Server B returns Blob Descriptor