"""
Middleware used for adjusting headers in a response before it is sent to the end user.
"""


class HeaderControlMiddleware(object):
    """
    Middleware that can modify/remove headers in a response.

    This can be used, for example, to remove headers i.e. drop any Vary headers to improve cache performance.
    """

    def process_response(self, _request, response):
        """
        Processes the given response, potentially remove or modifying headers.
        """

        for header in getattr(response, 'remove_headers', []):
            del response[header]

        for header, value in getattr(response, 'force_headers', {}).iteritems():
            response[header] = value

        return response