コード例 #1
0
ファイル: exc.py プロジェクト: pombredanne/routr
class MethodNotAllowed(NoMatchFound):
    """ Raised when request was matched but request method isn't allowed"""

    response = exc.HTTPMethodNotAllowed()
コード例 #2
0
ファイル: decorators.py プロジェクト: petertsehsun/allura
 def check_method(remainder, params):
     if request.method != 'POST':
         if self.redir is not None:
             redirect(self.redir)
         raise exc.HTTPMethodNotAllowed(headers={'Allow': 'POST'})
コード例 #3
0
ファイル: siesta.py プロジェクト: gurucoyote/c20
 def replacement(environ, start_response):
     if environ['REQUEST_METHOD'] == http_method:
         return wsgi_adapter(func, environ, start_response)
     return exc.HTTPMethodNotAllowed()(environ, start_response)
コード例 #4
0
ファイル: test_exc.py プロジェクト: multiversecoder/webob
def method_not_allowed_app(req):
    if req.method != "GET":
        raise webob_exc.HTTPMethodNotAllowed()

    return "hello!"
コード例 #5
0
 def service(self, req):
     if req.method != 'GET':
         raise exc.HTTPMethodNotAllowed()
     return self.handle_monitor(req)
コード例 #6
0
def method_not_allowed_app(req):
    if req.method != 'GET':
        raise webob_exc.HTTPMethodNotAllowed()
    return 'hello!'
コード例 #7
0
ファイル: proxies.py プロジェクト: almet/WSGIProxy2
    def __call__(self, environ, start_response):
        method = environ['REQUEST_METHOD']
        if method not in self.allowed_methods:
            return exc.HTTPMethodNotAllowed()(environ, start_response)

        if self.strip_script_name:
            path_info = ''
        else:
            path_info = environ['SCRIPT_NAME']
        path_info += environ['PATH_INFO']

        query_string = environ['QUERY_STRING']
        if query_string:
            path_info += '?' + query_string

        for key, dest in self.header_map.items():
            value = environ.get(key)
            if value:
                environ['HTTP_%s' % dest] = value

        host_uri = self.extract_uri(environ)
        uri = host_uri + path_info

        new_headers = {}
        for k, v in environ.items():
            if k.startswith('HTTP_'):
                k = k[5:].replace('_', '-').title()
                new_headers[k] = v

        content_type = environ.get("CONTENT_TYPE")
        if content_type and content_type is not None:
            new_headers['Content-Type'] = content_type

        content_length = environ.get('CONTENT_LENGTH')
        transfer_encoding = environ.get('Transfer-Encoding', '').lower()
        if not content_length and transfer_encoding != 'chunked':
            new_headers['Transfer-Encoding'] = 'chunked'
        elif content_length:
            new_headers['Content-Length'] = content_length

        if new_headers.get('Content-Length', '0') == '-1':
            resp = exc.HTTPInternalServerError(detail=WEBOB_ERROR)
            return resp(environ, start_response)

        try:
            response = self.process_request(uri, method, new_headers, environ)
        except socket.timeout:
            return exc.HTTPGatewayTimeout()(environ, start_response)
        except (socket.error, socket.gaierror):
            return exc.HTTPBadGateway()(environ, start_response)
        except Exception as e:
            self.logger.exception(e)
            return exc.HTTPInternalServerError()(environ, start_response)

        status, location, headerslist, app_iter = response

        if location:
            if self.strip_script_name:
                prefix_path = environ['SCRIPT_NAME']
            else:
                prefix_path = None

            new_location = rewrite_location(host_uri, location,
                    prefix_path=prefix_path)

            headers = []
            for k, v in headerslist:
                if k.lower() == 'location':
                    v = new_location
                headers.append((k, v))
        else:
            headers = headerslist

        start_response(status, headers)

        if method == "HEAD":
            return [six.b('')]

        return app_iter
コード例 #8
0
def callable_app(req):
    if req.method == 'UNDERPANTS':
        raise exc.HTTPMethodNotAllowed()
    elif req.method == 'GET':
        return None
    return req.llsd
コード例 #9
0
ファイル: environment.py プロジェクト: xyzlat/palette
 def service(self, req):
     if req.method == 'GET':
         return self.handle_GET(req)
     if req.method == 'POST':
         return self.handle_POST(req)
     raise exc.HTTPMethodNotAllowed()
コード例 #10
0
ファイル: appie.py プロジェクト: tomrijntjes/amazing
 def handle_DELETE(self, req, *args, **kwargs):
     return exc.HTTPMethodNotAllowed()
コード例 #11
0
 def error(self, request):
     """deal with non-supported methods"""
     return exc.HTTPMethodNotAllowed("Only %r operations are allowed" %
                                     self.response_functions.keys())
コード例 #12
0
 def __call__(self, method):
     if method.upper() not in self.methods.keys():
         raise exc.HTTPMethodNotAllowed()
     else:
         return self.methods[method]