Merge "s3api: simplify BaseAclHandler.request_with"
This commit is contained in:
@@ -58,7 +58,6 @@ from swift.common.middleware.s3api.etree import fromstring, XMLSyntaxError, \
|
|||||||
DocumentInvalid
|
DocumentInvalid
|
||||||
from swift.common.middleware.s3api.utils import MULTIUPLOAD_SUFFIX, \
|
from swift.common.middleware.s3api.utils import MULTIUPLOAD_SUFFIX, \
|
||||||
sysmeta_header
|
sysmeta_header
|
||||||
from contextlib import contextmanager
|
|
||||||
|
|
||||||
|
|
||||||
def get_acl_handler(controller_name):
|
def get_acl_handler(controller_name):
|
||||||
@@ -85,19 +84,18 @@ class BaseAclHandler(object):
|
|||||||
self.headers = req.headers if headers is None else headers
|
self.headers = req.headers if headers is None else headers
|
||||||
self.logger = logger
|
self.logger = logger
|
||||||
|
|
||||||
@contextmanager
|
|
||||||
def request_with(self, container, obj, headers):
|
def request_with(self, container, obj, headers):
|
||||||
yield type(self)(self.req, self.logger,
|
return type(self)(self.req, self.logger,
|
||||||
container=container, obj=obj, headers=headers)
|
container=container, obj=obj, headers=headers)
|
||||||
|
|
||||||
def handle_acl(self, app, method, container=None, obj=None, headers=None):
|
def handle_acl(self, app, method, container=None, obj=None, headers=None):
|
||||||
method = method or self.method
|
method = method or self.method
|
||||||
|
|
||||||
with self.request_with(container, obj, headers) as ah:
|
ah = self.request_with(container, obj, headers)
|
||||||
if hasattr(ah, method):
|
if hasattr(ah, method):
|
||||||
return getattr(ah, method)(app)
|
return getattr(ah, method)(app)
|
||||||
else:
|
else:
|
||||||
return ah._handle_acl(app, method)
|
return ah._handle_acl(app, method)
|
||||||
|
|
||||||
def _handle_acl(self, app, sw_method, container=None, obj=None,
|
def _handle_acl(self, app, sw_method, container=None, obj=None,
|
||||||
permission=None, headers=None):
|
permission=None, headers=None):
|
||||||
@@ -332,12 +330,10 @@ class MultiUploadAclHandler(BaseAclHandler):
|
|||||||
|
|
||||||
def handle_acl(self, app, method, container=None, obj=None, headers=None):
|
def handle_acl(self, app, method, container=None, obj=None, headers=None):
|
||||||
method = method or self.method
|
method = method or self.method
|
||||||
with self.request_with(container, obj, headers) as ah:
|
ah = self.request_with(container, obj, headers)
|
||||||
# MultiUpload stuffs don't need acl check basically.
|
# MultiUpload stuffs don't need acl check basically.
|
||||||
if hasattr(ah, method):
|
if hasattr(ah, method):
|
||||||
return getattr(ah, method)(app)
|
return getattr(ah, method)(app)
|
||||||
else:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def HEAD(self, app):
|
def HEAD(self, app):
|
||||||
# For _check_upload_info
|
# For _check_upload_info
|
||||||
|
Reference in New Issue
Block a user