class MethodNotAllowed(NoMatchFound): """ Raised when request was matched but request method isn't allowed""" response = exc.HTTPMethodNotAllowed()
def check_method(remainder, params): if request.method != 'POST': if self.redir is not None: redirect(self.redir) raise exc.HTTPMethodNotAllowed(headers={'Allow': 'POST'})
def replacement(environ, start_response): if environ['REQUEST_METHOD'] == http_method: return wsgi_adapter(func, environ, start_response) return exc.HTTPMethodNotAllowed()(environ, start_response)
def method_not_allowed_app(req): if req.method != "GET": raise webob_exc.HTTPMethodNotAllowed() return "hello!"
def service(self, req): if req.method != 'GET': raise exc.HTTPMethodNotAllowed() return self.handle_monitor(req)
def method_not_allowed_app(req): if req.method != 'GET': raise webob_exc.HTTPMethodNotAllowed() return 'hello!'
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
def callable_app(req): if req.method == 'UNDERPANTS': raise exc.HTTPMethodNotAllowed() elif req.method == 'GET': return None return req.llsd
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()
def handle_DELETE(self, req, *args, **kwargs): return exc.HTTPMethodNotAllowed()
def error(self, request): """deal with non-supported methods""" return exc.HTTPMethodNotAllowed("Only %r operations are allowed" % self.response_functions.keys())
def __call__(self, method): if method.upper() not in self.methods.keys(): raise exc.HTTPMethodNotAllowed() else: return self.methods[method]