def index(request, uri):
"""
Proxies render requests to graphite-web, as configured in graphite.conf
"""
base = CONFIG.get('graphiteweb', 'base')
if request.method in ('GET', 'HEAD'):
query = _inject_default_arguments(request.GET)
url = urljoin(base, uri + ('?' + query) if query else '')
req = Request(url)
elif request.method == 'POST':
data = _inject_default_arguments(request.POST)
url = urljoin(base, uri)
req = Request(url, data)
else:
return HttpResponseNotAllowed(['GET', 'POST', 'HEAD'])
LOGGER.debug("proxying request to %r", url)
proxy = urlopen(req)
headers = proxy.info()
content_type = headers.getheader('Content-Type', 'text/html')
if request.method == 'HEAD':
response = HttpResponse(content_type=content_type)
response['Content-Length'] = headers.getheader('Content-Length', '0')
else:
response = HttpResponse(proxy.read(), content_type=content_type)
response['X-Where-Am-I'] = request.get_full_path()
return response
评论列表
文章目录