mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-31 02:28:09 +08:00
Redirecting /display to a presigned object-store URL was a non-obvious
breaking change: curl does not follow redirects by default and requests
does not follow them for HEAD, and it only happened for certain object
stores. Instead, leave /display untouched (it always streams through
Galaxy) and add an explicit /download route whose contract is that
clients must follow a 302.
- New GET/HEAD /api/datasets/{id}/download and
/api/histories/{history_id}/contents/{id}/download. GET redirects (302)
to a presigned URL when the backend supports it, otherwise streams the
whole file (zipping composite datatypes) exactly as before. HEAD answers
from object-store metadata (size, filename) without redirecting or
pulling into cache, so HEAD clients still get the size.
- Revert the redirect from /display; drop the DirectDownloadUrl sentinel.
- Point the web UI download actions and the HDA download_url field at the
new route. (bioblend will move to it in a follow-up in its own repo.)
Refs galaxyproject/galaxy#19255