diff options
author | indianwhocodes <nairashwin952013@gmail.com> | 2022-11-16 12:03:07 -0800 |
---|---|---|
committer | Tim Burke <tim.burke@gmail.com> | 2022-12-01 13:21:01 -0800 |
commit | d363236a245ed9112c19fdd5df5fff31fa24b865 (patch) | |
tree | 6162ecbf249f534d95847a56ff718740322a4a63 /swift/common/middleware/s3api/s3request.py | |
parent | 38124221d7bbce8459fd544a15fb5e57dfc7213e (diff) | |
download | swift-d363236a245ed9112c19fdd5df5fff31fa24b865.tar.gz |
s3api errors for unsupported headers x-delete-at, x-delete-after
We need to support the aforementioned headers in our s3 apis
and raise an InvalidArgumentError if a s3 client makes a request
Change-Id: I2c5b18e52da7f33b31ba386cdbd042f90b69ef97
Diffstat (limited to 'swift/common/middleware/s3api/s3request.py')
-rw-r--r-- | swift/common/middleware/s3api/s3request.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/swift/common/middleware/s3api/s3request.py b/swift/common/middleware/s3api/s3request.py index 6f8963b5f..19a8304e1 100644 --- a/swift/common/middleware/s3api/s3request.py +++ b/swift/common/middleware/s3api/s3request.py @@ -57,8 +57,7 @@ from swift.common.middleware.s3api.s3response import AccessDenied, \ MalformedXML, InvalidRequest, RequestTimeout, InvalidBucketName, \ BadDigest, AuthorizationHeaderMalformed, SlowDown, \ AuthorizationQueryParametersError, ServiceUnavailable, BrokenMPU -from swift.common.middleware.s3api.exception import NotS3Request, \ - BadSwiftRequest +from swift.common.middleware.s3api.exception import NotS3Request from swift.common.middleware.s3api.utils import utf8encode, \ S3Timestamp, mktime, MULTIUPLOAD_SUFFIX from swift.common.middleware.s3api.subresource import decode_acl, encode_acl @@ -642,7 +641,7 @@ class S3Request(swob.Request): bucket, self.conf.dns_compliant_bucket_names): # Ignore GET service case raise InvalidBucketName(bucket) - return (bucket, obj) + return bucket, obj def _parse_query_authentication(self): """ @@ -779,7 +778,6 @@ class S3Request(swob.Request): raise InvalidArgument('x-amz-copy-source', self.headers['X-Amz-Copy-Source'], msg) - if 'x-amz-metadata-directive' in self.headers: value = self.headers['x-amz-metadata-directive'] if value not in ('COPY', 'REPLACE'): @@ -1399,7 +1397,17 @@ class S3Request(swob.Request): raise err_resp() if status == HTTP_BAD_REQUEST: - raise BadSwiftRequest(err_msg.decode('utf8')) + err_str = err_msg.decode('utf8') + if 'X-Delete-At' in err_str: + raise InvalidArgument('X-Delete-At', + self.headers['X-Delete-At'], + err_str) + if 'X-Delete-After' in err_msg.decode('utf8'): + raise InvalidArgument('X-Delete-After', + self.headers['X-Delete-After'], + err_str) + else: + raise InvalidRequest(msg=err_str) if status == HTTP_UNAUTHORIZED: raise SignatureDoesNotMatch( **self.signature_does_not_match_kwargs()) |