コード例 #1
0
ファイル: metadata.py プロジェクト: 2015-ucsc-hp/swift
    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)
コード例 #2
0
    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)