Source code for uriregistry.views
import requests
from pyramid.response import Response
from pyramid.view import view_config
from pyramid.httpexceptions import (
HTTPBadRequest
)
from pyramid_urireferencer.models import (
ApplicationResponse,
RegistryResponse
)
from .utils import query_application
import logging
log = logging.getLogger(__name__)
class ApplicationView(object):
def __init__(self, request):
self.request = request
class RestView(ApplicationView):
pass
class RegistryView(RestView):
@view_config(route_name='references', renderer='json', accept='application/json')
def get_references(self):
'''
Collect the references for a URI and relay them to the client.
'''
uri = self.request.params.get('uri', None)
if not uri:
raise HTTPBadRequest('Please include a URI parameter.')
applications = self.request.uri_registry.get_applications(uri)
application_responses = [query_application(app, uri) for app in applications]
return _get_registry_response(application_responses, uri)
@view_config(route_name='home', request_method='GET')
def home(self):
'''
The root information page
'''
return Response(service_info, content_type='text/plain', status_int=200)
service_info = """UriRegistry: what are my uri's up to?"""
[docs]def _get_registry_response(application_responses, uri):
"""
Generate the final response by aggregating all the application responses.
:param list application_responses: All :class:`pyramid_urireferencer.models.ApplicationResponse` instances.
:param str uri: Uri that was evaluated
:param str base_uri: Base uri of the uri that was evaluated
:return: :class:`pyramid_urireferencer.models.RegistryResponse` with all \
information the registry has collected
"""
success = True
has_references = False
count = 0
for r in application_responses:
if not r.success:
success = False
if r.has_references:
has_references = True
if r.count is not None:
count = count + r.count
return RegistryResponse(uri, success, has_references, count, application_responses)