mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #17072 from mvdbeek/add_head_route_to_job_files
[23.1] Add HEAD route to job_files endpoint
This commit is contained in:
@@ -548,6 +548,9 @@ def send_file(start_response, trans, body):
|
||||
trans.response.headers["accept-ranges"] = "bytes"
|
||||
start = None
|
||||
end = None
|
||||
if trans.request.method == "HEAD":
|
||||
trans.response.headers["content-length"] = os.path.getsize(body.name)
|
||||
body = b""
|
||||
if trans.request.range:
|
||||
start = int(trans.request.range.start)
|
||||
file_size = int(trans.response.headers["content-length"])
|
||||
@@ -555,7 +558,8 @@ def send_file(start_response, trans, body):
|
||||
trans.response.headers["content-length"] = str(end - start)
|
||||
trans.response.headers["content-range"] = f"bytes {start}-{end - 1}/{file_size}"
|
||||
trans.response.status = 206
|
||||
body = iterate_file(body, start, end)
|
||||
if body:
|
||||
body = iterate_file(body, start, end)
|
||||
start_response(trans.response.wsgi_status(), trans.response.wsgi_headeritems())
|
||||
return body
|
||||
|
||||
|
||||
@@ -1061,6 +1061,14 @@ def populate_api_routes(webapp, app):
|
||||
parent_resources=dict(member_name="job", collection_name="jobs"),
|
||||
)
|
||||
|
||||
webapp.mapper.connect(
|
||||
"index",
|
||||
"/api/jobs/{job_id}/files",
|
||||
controller="job_files",
|
||||
action="index",
|
||||
conditions=dict(method=["HEAD"]),
|
||||
)
|
||||
|
||||
webapp.mapper.resource(
|
||||
"port",
|
||||
"ports",
|
||||
|
||||
@@ -61,6 +61,10 @@ class TestJobFilesIntegration(integration_util.IntegrationTestCase):
|
||||
job_id, job_key = self._api_job_keys(job)
|
||||
data = {"path": self.input_hda.file_name, "job_key": job_key}
|
||||
get_url = self._api_url(f"jobs/{job_id}/files", use_key=True)
|
||||
head_response = requests.head(get_url, params=data)
|
||||
api_asserts.assert_status_code_is_ok(head_response)
|
||||
assert head_response.text == ""
|
||||
assert head_response.headers["content-length"] == str(len(TEST_INPUT_TEXT))
|
||||
response = requests.get(get_url, params=data)
|
||||
api_asserts.assert_status_code_is_ok(response)
|
||||
assert response.text == TEST_INPUT_TEXT
|
||||
|
||||
Reference in New Issue
Block a user