class revproxy.views.DiazoProxyView(*args, **kwargs)[source]

Bases: revproxy.views.ProxyView, django.views.generic.base.ContextMixin

diazo_theme_template = 'diazo.html'
dispatch(request, path)[source]
html5 = False
class revproxy.views.ProxyView(*args, **kwargs)[source]

Bases: django.views.generic.base.View

View responsable by excute proxy requests, process and return their responses.

add_remote_user = False
classmethod as_view(**initkwargs)[source]

Main entry point for a request-response process.

default_content_type = 'application/octet-stream'
dispatch(request, path)[source]

Return encoded query params to be used in proxied request


Get normalized headers for the upstream

Gets all headers from the original request and normalizes them. Normalization occurs by removing the prefix HTTP_ and replacing and _ by -. Example: HTTP_ACCEPT_ENCODING becames Accept-Encoding.

New in version 0.9.1.

Parameters:request – The original HTTPRequest instance
Returns:Normalized headers for the upstream

Return quoted path to be used in proxied request


Return request headers that will be sent to upstream.

The header REMOTE_USER is set to the current user if AuthenticationMiddleware is enabled and the view’s add_remote_user property is True.

New in version 0.9.8.

retries = None
rewrite = ()
strict_cookies = False


revproxy.response.DEFAULT_AMT = 65536

Default number of bytes that are going to be read in a file lecture

revproxy.response.get_django_response(proxy_response, strict_cookies=False)[source]

This method is used to create an appropriate response based on the Content-Length of the proxy_response. If the content is bigger than MIN_STREAMING_LENGTH, which is found on utils.py, than django.http.StreamingHttpResponse will be created, else a django.http.HTTPResponse will be created instead

  • proxy_response – An Instance of urllib3.response.HTTPResponse that will create an appropriate response
  • strict_cookies – Whether to only accept RFC-compliant cookies

Returns an appropriate response based on the proxy_response content-length



String used to verify if request has a ‘HTTP_X_DIAZO_OFF’ header

revproxy.transformer.DIAZO_OFF_RESPONSE_HEADER = 'X-Diazo-Off'

String used to verify if request has a ‘X-Diazo-Off’ header

class revproxy.transformer.DiazoTransformer(request, response)[source]

Bases: object

Class used to make a diazo transformation on a request or a response


This method remove the header Content-Length entry from the response


Method used to transform a doctype in to a properly html5 doctype


Determine if we should transform the response

Returns:A boolean value
transform(rules, theme_template, is_html5, context_data=None)[source]

Method used to make a transformation on the content of the http response based on the rules and theme_templates passed as paremters

  • rules – A file with a set of diazo rules to make a transformation over the original response content
  • theme_template – A file containing the template used to format the the original response content
  • is_html5 – A boolean parameter to identify a html5 doctype

A response with a content transformed based on the rules and theme_template

revproxy.transformer.HAS_DIAZO = False

Variable used to identify if diazo is available


Function used to convert certain string values into an appropriated boolean value.If value is not a string the built-in python bool function will be used to convert the passed parameter

Parameters:value – an object to be converted to a boolean value
Returns:A boolean value
revproxy.transformer.doctype_re = re.compile(b'^<!DOCTYPE\\s[^>]+>\\s*', re.MULTILINE)

Regex used to find the doctype-header in a html content


revproxy.utils.DEFAULT_CHARSET = 'latin-1'

Variable that represent the default charset used

revproxy.utils.HTML_CONTENT_TYPES = ('text/html', 'application/xhtml+xml')

List containing string constants that represents possible html content type


List containing string constant that are used to represent headers that can be ignored in the required_header function

revproxy.utils.MIN_STREAMING_LENGTH = 4096

Variable used to represent a minimal content size required for response to be turned into stream

revproxy.utils.cookie_from_string(cookie_string, strict_cookies=False)[source]

Parser for HTTP header set-cookie The return from this function will be used as parameters for django’s response.set_cookie method. Because set_cookie doesn’t have parameter comment, this cookie attribute will be ignored.

  • cookie_string – A string representing a valid cookie
  • strict_cookies – Whether to only accept RFC-compliant cookies

A dictionary containing the cookie_string attributes


Function that encode all elements in the list of items passed as a parameter

Parameters:items – A list of tuple
Returns:A list of tuple with all items encoded in ‘utf-8’

Function used to retrieve the charset from a content-type.If there is no charset in the content type then the charset defined on DEFAULT_CHARSET will be returned

Parameters:content_type – A string containing a Content-Type header
Returns:A string containing the charset

Function used to verify if the parameter is a proper html content type

Parameters:content_type – String variable that represent a content-type
Returns:A boolean value stating if the content_type is a valid html content type

Function used to transform header, replacing ‘HTTP_’ to ‘’ and replace ‘_’ to ‘-‘

Parameters:request – A HttpRequest that will be transformed
Returns:A dictionary with the normalized headers

Function that verify if the header parameter is a essential header

Parameters:header – A string represented a header
Returns:A boolean value that represent if the header is required
revproxy.utils.set_response_headers(response, response_headers)[source]

Function to verify if the proxy_response must be converted into a stream.This will be done by checking the proxy_response content-length and verify if its length is bigger than one stipulated by MIN_STREAMING_LENGTH.

Parameters:proxy_response – An Instance of urllib3.response.HTTPResponse
Returns:A boolean stating if the proxy_response should be treated as a stream

Remove wrapping quotes from a string.

Parameters:value – A string that might be wrapped in double quotes, such as a HTTP cookie value.
Returns:Beginning and ending quotes removed and escaped quotes (") unescaped