capybara/virtualenv/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.py
def cache_response(self, request, response, body=None):
        """
        Algorithm for caching requests.

        This assumes a requests Response object.
        """
        # From httplib2: Don't cache 206's since we aren't going to
        #                handle byte range requests
        if response.status not in [200, 203, 300, 301]:
            return

        response_headers = CaseInsensitiveDict(response.headers)

        cc_req = self.parse_cache_control(request.headers)
        cc = self.parse_cache_control(response_headers)

        cache_url = self.cache_url(request.url)

        # Delete it from the cache if we happen to have it stored there
        no_store = cc.get('no-store') or cc_req.get('no-store')
        if no_store and self.cache.get(cache_url):
            self.cache.delete(cache_url)

        # If we've been given an etag, then keep the response
        if self.cache_etags and 'etag' in response_headers:
            self.cache.set(
                cache_url,
                self.serializer.dumps(request, response, body=body),
            )

        # Add to the cache any 301s. We do this before looking that
        # the Date headers.
        elif response.status == 301:
            self.cache.set(
                cache_url,
                self.serializer.dumps(request, response)
            )

        # Add to the cache if the response headers demand it. If there
        # is no date header then we can't do anything about expiring
        # the cache.
        elif 'date' in response_headers:
            # cache when there is a max-age > 0
            if cc and cc.get('max-age'):
                if int(cc['max-age']) > 0:
                    self.cache.set(
                        cache_url,
                        self.serializer.dumps(request, response, body=body),
                    )

            # If the request can expire, it means we should cache it
            # in the meantime.
            elif 'expires' in response_headers:
                if response_headers['expires']:
                    self.cache.set(
                        cache_url,
                        self.serializer.dumps(request, response, body=body),
                    )
def cache_response(self, request, response, body=None):
        # From httplib2: Don't cache 206's since we aren't going to
        #                handle byte range requests
        if response.status not in [200, 203, 300, 301]:
            return

        response_headers = CaseInsensitiveDict(response.headers)

        cc_req = self.parse_cache_control(request.headers)
        cc = self.parse_cache_control(response_headers)

        cache_url = self.cache_url(request.url)

        # Delete it from the cache if we happen to have it stored there
        no_store = cc.get('no-store') or cc_req.get('no-store')
        if no_store and self.cache.get(cache_url):
            self.cache.delete(cache_url)

        # If we've been given an etag, then keep the response
        if self.cache_etags and 'etag' in response_headers:
            self.cache.set(
                cache_url,
                self.serializer.dumps(request, response, body=body),
            )

        # Add to the cache any 301s. We do this before looking that
        # the Date headers.
        elif response.status == 301:
            self.cache.set(
                cache_url,
                self.serializer.dumps(request, response)
            )

        # Add to the cache if the response headers demand it. If there
        # is no date header then we can't do anything about expiring
        # the cache.
        elif 'date' in response_headers:
            # cache when there is a max-age > 0
            if cc and cc.get('max-age'):
                if int(cc['max-age']) > 0:
                    self.cache.set(
                        cache_url,
                        self.serializer.dumps(request, response, body=body),
                    )

            # If the request can expire, it means we should cache it
            # in the meantime.
            elif 'expires' in response_headers:
                if response_headers['expires']:
                    self.cache.set(
                        cache_url,
                        self.serializer.dumps(request, response, body=body),
                    )
def cache_response ( self , request , response , body = None ) : # From httplib2: Don't cache 206's since we aren't going to #                handle byte range requests if response . status not in [ 200 , 203 , 300 , 301 ] : return response_headers = CaseInsensitiveDict ( response . headers ) cc_req = self . parse_cache_control ( request . headers ) cc = self . parse_cache_control ( response_headers ) cache_url = self . cache_url ( request . url ) # Delete it from the cache if we happen to have it stored there no_store = cc . get ( 'no-store' ) or cc_req . get ( 'no-store' ) if no_store and self . cache . get ( cache_url ) : self . cache . delete ( cache_url ) # If we've been given an etag, then keep the response if self . cache_etags and 'etag' in response_headers : self . cache . set ( cache_url , self . serializer . dumps ( request , response , body = body ) , ) # Add to the cache any 301s. We do this before looking that # the Date headers. elif response . status == 301 : self . cache . set ( cache_url , self . serializer . dumps ( request , response ) ) # Add to the cache if the response headers demand it. If there # is no date header then we can't do anything about expiring # the cache. elif 'date' in response_headers : # cache when there is a max-age > 0 if cc and cc . get ( 'max-age' ) : if int ( cc [ 'max-age' ] ) > 0 : self . cache . set ( cache_url , self . serializer . dumps ( request , response , body = body ) , ) # If the request can expire, it means we should cache it # in the meantime. elif 'expires' in response_headers : if response_headers [ 'expires' ] : self . cache . set ( cache_url , self . serializer . dumps ( request , response , body = body ) , )
Algorithm for caching requests.

        This assumes a requests Response object.
Algorithm for caching requests .