Changeset View
Changeset View
Standalone View
Standalone View
swh/web/api/apiurls.py
# Copyright (C) 2017-2019 The Software Heritage developers | # Copyright (C) 2017-2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU Affero General Public License version 3, or any later version | # License: GNU Affero General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import functools | import functools | ||||
from typing import Dict, List, Optional | from typing import Dict, List, Optional | ||||
from django.http import HttpResponse | from django.http.response import HttpResponseBase | ||||
from django.utils.cache import add_never_cache_headers | from django.utils.cache import add_never_cache_headers | ||||
from rest_framework.decorators import api_view | from rest_framework.decorators import api_view | ||||
from swh.web.api import throttling | from swh.web.api import throttling | ||||
from swh.web.api.apiresponse import make_api_response | from swh.web.api.apiresponse import make_api_response | ||||
from swh.web.common.urlsindex import UrlsIndex | from swh.web.common.urlsindex import UrlsIndex | ||||
▲ Show 20 Lines • Show All 76 Lines • ▼ Show 20 Lines | def decorator(f): | ||||
def api_view_f(request, **kwargs): | def api_view_f(request, **kwargs): | ||||
response = f(request, **kwargs) | response = f(request, **kwargs) | ||||
doc_data = None | doc_data = None | ||||
# check if response has been forwarded by api_doc decorator | # check if response has been forwarded by api_doc decorator | ||||
if isinstance(response, dict) and "doc_data" in response: | if isinstance(response, dict) and "doc_data" in response: | ||||
doc_data = response["doc_data"] | doc_data = response["doc_data"] | ||||
response = response["data"] | response = response["data"] | ||||
# check if HTTP response needs to be created | # check if HTTP response needs to be created | ||||
if not isinstance(response, HttpResponse): | if not isinstance(response, HttpResponseBase): | ||||
api_response = make_api_response( | api_response = make_api_response( | ||||
request, data=response, doc_data=doc_data | request, data=response, doc_data=doc_data | ||||
) | ) | ||||
else: | else: | ||||
api_response = response | api_response = response | ||||
if never_cache: | if never_cache: | ||||
add_never_cache_headers(api_response) | add_never_cache_headers(api_response) | ||||
Show All 17 Lines |