Skip to content
Snippets Groups Projects
Commit edb6bc33 authored by vlorentz's avatar vlorentz
Browse files

api/vault: Re-add obj_type and obj_id to legacy API endpoints

parent 25654a27
No related branches found
Tags v0.0.323
No related merge requests found
......@@ -8,6 +8,7 @@ from typing import Any, Dict
from django.http import HttpResponse
from django.shortcuts import redirect
from swh.model.hashutil import hash_to_hex
from swh.model.identifiers import CoreSWHID, ObjectType
from swh.web.api.apidoc import api_doc, format_docstring
from swh.web.api.apiurls import api_route
......@@ -44,15 +45,24 @@ def _dispatch_cook_progress(request, bundle_type: str, swhid: CoreSWHID):
)
def _vault_response(vault_response: Dict[str, Any]) -> Dict[str, Any]:
return {
def _vault_response(
vault_response: Dict[str, Any], add_legacy_items: bool
) -> Dict[str, Any]:
d = {
"fetch_url": vault_response["fetch_url"],
"progress_message": vault_response["progress_msg"],
"id": vault_response["task_id"],
"status": vault_response["task_status"],
"swhid": str(vault_response["swhid"]),
"swhid": vault_response["swhid"],
}
if add_legacy_items:
swhid = CoreSWHID.from_string(vault_response["swhid"])
d["obj_type"] = swhid.object_type.name.lower()
d["obj_id"] = hash_to_hex(swhid.object_id)
return d
######################################################
# Flat bundles
......@@ -114,7 +124,7 @@ def api_vault_cook_flat(request, swhid):
res["fetch_url"] = reverse(
"api-1-vault-fetch-flat", url_args={"swhid": str(swhid)}, request=request,
)
return _vault_response(res)
return _vault_response(res, add_legacy_items=False)
elif swhid.object_type == ObjectType.CONTENT:
raise BadInputExc(
"Content objects do not need to be cooked, "
......@@ -155,7 +165,7 @@ def api_vault_cook_directory(request, dir_id):
res["fetch_url"] = reverse(
"api-1-vault-fetch-flat", url_args={"swhid": swhid}, request=request,
)
return _vault_response(res)
return _vault_response(res, add_legacy_items=True)
@api_route(
......@@ -279,7 +289,7 @@ def api_vault_cook_gitfast(request, swhid):
url_args={"swhid": str(swhid)},
request=request,
)
return _vault_response(res)
return _vault_response(res, add_legacy_items=False)
elif swhid.object_type == ObjectType.CONTENT:
raise BadInputExc(
"Content objects do not need to be cooked, "
......@@ -319,7 +329,7 @@ def api_vault_cook_revision_gitfast(request, rev_id):
res["fetch_url"] = reverse(
"api-1-vault-fetch-gitfast", url_args={"swhid": swhid}, request=request,
)
return _vault_response(res)
return _vault_response(res, add_legacy_items=True)
@api_route(
......@@ -444,7 +454,7 @@ def api_vault_cook_git_bare(request, swhid):
url_args={"swhid": str(swhid)},
request=request,
)
return _vault_response(res)
return _vault_response(res, add_legacy_items=False)
elif swhid.object_type == ObjectType.CONTENT:
raise BadInputExc(
"Content objects do not need to be cooked, "
......
......@@ -200,9 +200,9 @@ def test_api_vault_cook_error(api_client, mocker, bundle_type, swhid_type, hint)
def test_api_vault_cook_legacy(api_client, mocker, directory, revision):
mock_archive = mocker.patch("swh.web.api.views.vault.archive")
for obj_type, bundle_type, obj_id in (
("directory", "flat", directory),
("revision_gitfast", "gitfast", revision),
for obj_type, bundle_type, response_obj_type, obj_id in (
("directory", "flat", "directory", directory),
("revision_gitfast", "gitfast", "revision", revision),
):
swhid = f"swh:1:{obj_type[:3]}:{obj_id}"
......@@ -215,6 +215,8 @@ def test_api_vault_cook_legacy(api_client, mocker, directory, revision):
"task_id": 1,
"task_status": "done",
"swhid": swhid,
"obj_type": response_obj_type,
"obj_id": obj_id,
}
stub_fetch = b"content"
......@@ -235,6 +237,8 @@ def test_api_vault_cook_legacy(api_client, mocker, directory, revision):
"id": 1,
"status": "done",
"swhid": swhid,
"obj_type": response_obj_type,
"obj_id": obj_id,
}
mock_archive.vault_cook.assert_called_with(
bundle_type, CoreSWHID.from_string(swhid), email
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment