Esempio n. 1
0
 def testproxy(self, Http):
     req = mock.Mock()
     req.environ = dict(
         HTTP_CACHE_CONTROL='cache-headers',
         HTTP_X_FOO='foobar',
         PATH_INFO='/foo/bar',
         QUERY_STRING='foo=bar&bar=foo',
         HTTP_HOST='example.com',
     )
     req.META = req.environ
     mockhttp = mock.Mock()
     mockhttp.request.return_value = ({
         'status': '200',
         'Cache-Control': 'no-cache',
         'Keep-Alive': '10',
     }, 'bar')
     Http.return_value = mockhttp
     resp = proxy(req)
     req_args, req_kwargs = mockhttp.request.call_args
     self.assertTrue('foo/bar?foo=bar&bar=foo' in req_args[0])
     self.assertEqual(req_args[1], 'GET')
     headers = {
         'Host': 'example.com',
         'X-Foo': 'foobar',
         'Cache-Control': 'cache-headers'
     }
     self.assertEqual(req_kwargs['headers'], headers)
     self.assertEqual(resp['Cache-Control'], 'no-cache')
     self.assertEqual(resp.content, 'bar'.encode('utf8'))
     self.assertFalse(hasattr(resp, 'Keep-Alive'))
Esempio n. 2
0
    def get(self, request):
        response = None
        #should this bypass this replicates part of the irule
        if not self.should_bypass_cache(request):
            response, expired = self.get_cache(request)
            # send off the celery task if it's expired
            if expired:
                logger.info("sending task for %s" %request.build_absolute_uri())
                self.send_task(request, response)
            elif response:
                logger.info("not sending task for %s" %request.build_absolute_uri())
            else:
                logger.info("cache miss for %s" %request.build_absolute_uri())

        # if response is still none we have to proxy
        if response is None:
            logger.info('request %s proxied' %request.build_absolute_uri())
            response = proxy(request)
            #TODO: delete the following two lines
            #self.set_cache(request, response)
            response['X-Bettercache-Proxy'] = 'true'
        else:
            response['X-Bettercache-Proxy'] = 'false'
            logger.info('request %s from cache' %request.build_absolute_uri())

        return response
Esempio n. 3
0
    def get(self, request):
        response = None
        #should this bypass this replicates part of the irule
        if not self.should_bypass_cache(request):
            response, expired = self.get_cache(request)
            # send off the celery task if it's expired
            if expired:
                logger.info("EXPIRED sending task for %s" %
                            request.build_absolute_uri())
                self.send_task(request, response)
            elif response:
                logger.debug("not sending task for %s" %
                             request.build_absolute_uri())
            else:
                logger.info("MISS for: %s" % request.build_absolute_uri())

        # if response is still none we have to proxy
        if response is None:
            logger.debug('PROXY from: %s' % request.build_absolute_uri())
            response = proxy(request)
            response['X-Bettercache-Proxy'] = 'true'
        else:
            response['X-Bettercache-Proxy'] = 'false'
            logger.info('HIT for: %s' % request.build_absolute_uri())

        return response
Esempio n. 4
0
 def testproxy(self, Http):
     req = mock.Mock()
     req.environ = dict( HTTP_CACHE_CONTROL='cache-headers',
                     HTTP_X_FOO='foobar',
                     PATH_INFO='/foo/bar',
                     QUERY_STRING='foo=bar&bar=foo',
                     HTTP_HOST='example.com',
                     )
     req.META = req.environ
     mockhttp = mock.Mock()
     mockhttp.request.return_value = ({'status':'200','Cache-Control':'no-cache', 'Keep-Alive': '10', },'bar')
     Http.return_value = mockhttp
     resp = proxy(req)
     req_args, req_kwargs =  mockhttp.request.call_args
     self.assertTrue('foo/bar?foo=bar&bar=foo' in req_args[0])
     self.assertEqual(req_args[1], 'GET')
     headers = {'Host': 'example.com', 'X-Foo': 'foobar', 'Cache-Control': 'cache-headers'}
     self.assertEqual(req_kwargs['headers'], headers)
     self.assertEqual(resp['Cache-Control'], 'no-cache')
     self.assertEqual(resp.content, 'bar'.encode('utf8'))
     self.assertFalse(hasattr(resp, 'Keep-Alive'))
Esempio n. 5
0
    def get(self, request):
        response = None
        #should this bypass this replicates part of the irule
        if not self.should_bypass_cache(request):
            response, expired = self.get_cache(request)
            # send off the celery task if it's expired
            if expired:
                logger.info("EXPIRED sending task for %s" % request.build_absolute_uri())
                self.send_task(request, response)
            elif response:
                logger.debug("not sending task for %s" % request.build_absolute_uri())
            else:
                logger.info("MISS for: %s" % request.build_absolute_uri())

        # if response is still none we have to proxy
        if response is None:
            logger.debug('PROXY from: %s' % request.build_absolute_uri())
            response = proxy(request)
            response['X-Bettercache-Proxy'] = 'true'
        else:
            response['X-Bettercache-Proxy'] = 'false'
            logger.info('HIT for: %s' % request.build_absolute_uri())

        return response