def goto_url(request):
"""
View that takes the user to a URL with the annotation layer enabled.
Optional configuration for the client may be specified via additional query
params:
"q" - Initial query for the filter input in the client.
"""
settings = request.registry.settings
url = request.params.get('url')
if url is None:
raise httpexceptions.HTTPBadRequest('"url" parameter is missing')
if not _is_valid_http_url(url):
raise httpexceptions.HTTPBadRequest(
_('Sorry, but this service can only show annotations on '
'valid HTTP or HTTPs URLs.'))
# Remove any existing #fragment identifier from the URI before we
# append our own.
url = parse.urldefrag(url)[0]
query = parse.quote(request.params.get('q', ''))
via_url = '{via_base_url}/{url}#annotations:query:{query}'.format(
via_base_url=settings['via_base_url'],
url=url,
query=query)
extension_url = '{url}#annotations:query:{query}'.format(
url=url, query=query)
pretty_url = util.get_pretty_url(url)
return {
'data': json.dumps({
'chromeExtensionId': settings['chrome_extension_id'],
'viaUrl': via_url,
'extensionUrl': extension_url,
}),
'pretty_url': pretty_url
}
评论列表
文章目录