def __call__(self, env, start_response): req = Request(env) try: requestMethod = env['REQUEST_METHOD'] if requestMethod == 'DELETE': def delete_start_response(status, headers): if '204' in status: self.DELETE(env) return start_response(status, headers) return self.app(env, delete_start_response) if requestMethod == 'POST': def post_start_response(status, headers): if '204' in status: self.POST(env) return start_response(status, headers) return self.app(env, post_start_response) if (requestMethod == 'PUT') and ('X-Copy-From' in req.headers): #Modify the PUT to be a COPY for seamless operation v, a, c, o = split_path(req.path, 1, 4, True) req.path = ('/' + '/'.join([v,a]) + req.headers['X-Copy-From']) req.headers['Destination'] = '/'.join([c,o]) requestMethod = 'COPY' if requestMethod == 'COPY': def copy_start_response(status, headers): if '201' in status: self.COPY(env) return start_response(status, headers) return self.app(env, copy_start_response) if requestMethod == 'PUT': def put_start_response(status, headers): if ('201' in status) or ('202' in status): self.PUT(env) return start_response(status, headers) return self.app(env, put_start_response) if 'metadata' in req.params: if self.versioncheck(req.params['metadata']): handler = self.GET return handler(req)(env, start_response) elif req.params['metadata'] == 'services': handler = self.SERVICES return handler(req)(env, start_response) else: handler = self.BAD return handler(req)(env, start_response) except UnicodeError: pass return self.app(env, start_response)
def __call__(self, env, start_response): req = Request(env) try: requestMethod = env['REQUEST_METHOD'] if requestMethod == 'DELETE': def delete_start_response(status, headers): if '204' in status: self.DELETE(env) return start_response(status, headers) return self.app(env, delete_start_response) if requestMethod == 'POST': def post_start_response(status, headers): if '204' in status: self.POST(env) return start_response(status, headers) return self.app(env, post_start_response) if (requestMethod == 'PUT') and ('X-Copy-From' in req.headers): #Modify the PUT to be a COPY for seamless operation v, a, c, o = split_path(req.path, 1, 4, True) req.path = ('/' + '/'.join([v, a]) + req.headers['X-Copy-From']) req.headers['Destination'] = '/'.join([c, o]) requestMethod = 'COPY' if requestMethod == 'COPY': def copy_start_response(status, headers): if '201' in status: self.COPY(env) return start_response(status, headers) return self.app(env, copy_start_response) if requestMethod == 'PUT': def put_start_response(status, headers): if ('201' in status) or ('202' in status): self.PUT(env) return start_response(status, headers) return self.app(env, put_start_response) if 'metadata' in req.params: if self.versioncheck(req.params['metadata']): handler = self.GET return handler(req)(env, start_response) elif req.params['metadata'] == 'services': handler = self.SERVICES return handler(req)(env, start_response) else: handler = self.BAD return handler(req)(env, start_response) except UnicodeError: pass return self.app(env, start_response)