Ejemplo n.º 1
0
    def _add_cache_headers(self):
        """Maybe add cache headers on GET and HEAD requests."""
        verb = self.request.method.lower()
        if verb in ['get', 'head']:
            # check if there is caching information stored with the handler
            cache_config = self.environment.get_cache_info(self.__class__)
            if cache_config:
                self.set_header('Cache-Control',
                                compute_cache_header(cache_config))

            expires = self.environment.get_expires_info(self.__class__)
            if expires:
                self.set_header('Expires', datetime.now() + expires)
Ejemplo n.º 2
0
    def _add_cache_headers(self):
        """Maybe add cache headers on GET and HEAD requests."""
        verb = self.request.method.lower()
        if verb in ['get', 'head']:
            # check if there is caching information stored with the handler
            cache_config = self.environment.get_cache_info(self.__class__)
            if cache_config:
                self.set_header('Cache-Control',
                                compute_cache_header(cache_config))

            expires = self.environment.get_expires_info(self.__class__)
            if expires:
                self.set_header('Expires', datetime.now() + expires)
Ejemplo n.º 3
0
    def _execute_method(self):
        '''Execute the request.

        The method to be executed is determined by the request method.
        '''
        if not self._finished:
            verb = self.request.method.lower()
            headers = self.request.headers
            method = getattr(self, verb)
            kwargs = self.path_kwargs

            if verb in ['post', 'put'] and 'Content-Type' in headers:
                # try to find a matching consumer
                try:
                    (model, consumer_class) = ConsumerBase.map_consumer(
                        headers['Content-Type'], self)
                    consumer = consumer_class()
                    kwargs['model'] = consumer.consume(self, model)
                except NoConsumerFound:
                    # TODO return available consumer types?!
                    raise HTTPError(406)
                except StandardError as e:
                    raise HTTPError(400, reason=unicode(e))

            if verb in ['get', 'head']:
                # check if there is caching information stored with the handler
                cache_config = self.environment.get_cache_info(self.__class__)
                if cache_config:
                    self.set_header('Cache-Control',
                                    compute_cache_header(cache_config))

                expires = self.environment.get_expires_info(self.__class__)
                if expires:
                    self.set_header('Expires', datetime.now() + expires)

            future_model = method(*self.path_args, **kwargs)
            if future_model:
                callback = partial(self._provide_result, verb, headers)
                future_model.add_done_callback(callback)