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:
Martin Cech
2023-11-27 23:07:26 +01:00
committed by GitHub
3 changed files with 17 additions and 1 deletions
+5 -1
View File
@@ -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
+8
View File
@@ -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",
+4
View File
@@ -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