Support mirror status JSON by tier
Just as we do for the normal status HTML view. Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
ff6db38f1d
commit
0f6a0a1cd0
@ -5,6 +5,7 @@
|
||||
(r'^status/$', 'status', {}, 'mirror-status'),
|
||||
(r'^status/json/$', 'status_json', {}, 'mirror-status-json'),
|
||||
(r'^status/tier/(?P<tier>\d+)/$', 'status', {}, 'mirror-status-tier'),
|
||||
(r'^status/tier/(?P<tier>\d+)/json/$', 'status_json', {}, 'mirror-status-tier-json'),
|
||||
(r'^(?P<name>[\.\-\w]+)/$', 'mirror_details'),
|
||||
(r'^(?P<name>[\.\-\w]+)/json/$', 'mirror_details_json'),
|
||||
)
|
||||
|
@ -279,9 +279,15 @@ def default(self, obj):
|
||||
return super(ExtendedMirrorStatusJSONEncoder, self).default(obj)
|
||||
|
||||
|
||||
def status_json(request):
|
||||
def status_json(request, tier=None):
|
||||
if tier is not None:
|
||||
tier = int(tier)
|
||||
if tier not in [t[0] for t in Mirror.TIER_CHOICES]:
|
||||
raise Http404
|
||||
status_info = get_mirror_statuses()
|
||||
data = status_info.copy()
|
||||
if tier is not None:
|
||||
data['urls'] = [url for url in data['urls'] if url.mirror.tier == tier]
|
||||
data['version'] = 3
|
||||
to_json = json.dumps(data, ensure_ascii=False, cls=MirrorStatusJSONEncoder)
|
||||
response = HttpResponse(to_json, content_type='application/json')
|
||||
|
Loading…
Reference in New Issue
Block a user