Changeset View
Changeset View
Standalone View
Standalone View
swh/web/api/views/revision.py
Show First 20 Lines • Show All 104 Lines • ▼ Show 20 Lines | .. http:get:: /api/1/revision/(sha1_git)/ | ||||
.. parsed-literal:: | .. parsed-literal:: | ||||
:swh_web_api:`revision/aafb16d69fd30ff58afdd69036a26047f3aebdc6/` | :swh_web_api:`revision/aafb16d69fd30ff58afdd69036a26047f3aebdc6/` | ||||
""" # noqa | """ # noqa | ||||
return api_lookup( | return api_lookup( | ||||
service.lookup_revision, sha1_git, | service.lookup_revision, sha1_git, | ||||
notfound_msg='Revision with sha1_git {} not found.'.format(sha1_git), | notfound_msg='Revision with sha1_git {} not found.'.format(sha1_git), | ||||
enrich_fn=utils.enrich_revision) | enrich_fn=utils.enrich_revision, | ||||
request=request) | |||||
@api_route(r'/revision/(?P<sha1_git>[0-9a-f]+)/raw/', | @api_route(r'/revision/(?P<sha1_git>[0-9a-f]+)/raw/', | ||||
'api-1-revision-raw-message', checksum_args=['sha1_git']) | 'api-1-revision-raw-message', checksum_args=['sha1_git']) | ||||
@api_doc('/revision/raw/', tags=['hidden'], handle_response=True) | @api_doc('/revision/raw/', tags=['hidden'], handle_response=True) | ||||
def api_revision_raw_message(request, sha1_git): | def api_revision_raw_message(request, sha1_git): | ||||
"""Return the raw data of the message of revision identified by sha1_git | """Return the raw data of the message of revision identified by sha1_git | ||||
""" | """ | ||||
▲ Show 20 Lines • Show All 92 Lines • ▼ Show 20 Lines | def api_revision_log(request, sha1_git, prev_sha1s=None): | ||||
per_page = int(request.query_params.get('per_page', '10')) | per_page = int(request.query_params.get('per_page', '10')) | ||||
def lookup_revision_log_with_limit(s, limit=per_page+1): | def lookup_revision_log_with_limit(s, limit=per_page+1): | ||||
return service.lookup_revision_log(s, limit) | return service.lookup_revision_log(s, limit) | ||||
error_msg = 'Revision with sha1_git %s not found.' % sha1_git | error_msg = 'Revision with sha1_git %s not found.' % sha1_git | ||||
rev_get = api_lookup(lookup_revision_log_with_limit, sha1_git, | rev_get = api_lookup(lookup_revision_log_with_limit, sha1_git, | ||||
notfound_msg=error_msg, | notfound_msg=error_msg, | ||||
enrich_fn=utils.enrich_revision) | enrich_fn=utils.enrich_revision, | ||||
request=request) | |||||
nb_rev = len(rev_get) | nb_rev = len(rev_get) | ||||
if nb_rev == per_page+1: | if nb_rev == per_page+1: | ||||
rev_backward = rev_get[:-1] | rev_backward = rev_get[:-1] | ||||
new_last_sha1 = rev_get[-1]['id'] | new_last_sha1 = rev_get[-1]['id'] | ||||
query_params = {} | query_params = {} | ||||
if request.query_params.get('per_page'): | if request.query_params.get('per_page'): | ||||
query_params['per_page'] = per_page | query_params['per_page'] = per_page | ||||
result['headers'] = { | result['headers'] = { | ||||
'link-next': reverse('api-1-revision-log', | 'link-next': reverse('api-1-revision-log', | ||||
url_args={'sha1_git': new_last_sha1}, | url_args={'sha1_git': new_last_sha1}, | ||||
query_params=query_params) | query_params=query_params, | ||||
request=request) | |||||
} | } | ||||
else: | else: | ||||
rev_backward = rev_get | rev_backward = rev_get | ||||
if not prev_sha1s: # no nav breadcrumbs, so we're done | if not prev_sha1s: # no nav breadcrumbs, so we're done | ||||
revisions = rev_backward | revisions = rev_backward | ||||
else: | else: | ||||
rev_forward_ids = prev_sha1s.split('/') | rev_forward_ids = prev_sha1s.split('/') | ||||
rev_forward = api_lookup( | rev_forward = api_lookup( | ||||
service.lookup_revision_multiple, rev_forward_ids, | service.lookup_revision_multiple, rev_forward_ids, | ||||
notfound_msg=error_msg, | notfound_msg=error_msg, | ||||
enrich_fn=utils.enrich_revision) | enrich_fn=utils.enrich_revision, | ||||
request=request) | |||||
revisions = rev_forward + rev_backward | revisions = rev_forward + rev_backward | ||||
result.update({ | result.update({ | ||||
'results': revisions | 'results': revisions | ||||
}) | }) | ||||
return result | return result |