url decode x-amz-copy-source as per s3 nodejs documentation
This commit is contained in:
parent
3cede60f5b
commit
ef9b229acc
@ -4,7 +4,7 @@ import re
|
|||||||
|
|
||||||
import six
|
import six
|
||||||
from moto.core.utils import str_to_rfc_1123_datetime
|
from moto.core.utils import str_to_rfc_1123_datetime
|
||||||
from six.moves.urllib.parse import parse_qs, urlparse
|
from six.moves.urllib.parse import parse_qs, urlparse, unquote
|
||||||
|
|
||||||
import xmltodict
|
import xmltodict
|
||||||
|
|
||||||
@ -631,7 +631,7 @@ class ResponseObject(_TemplateEnvironmentMixin):
|
|||||||
upload_id = query['uploadId'][0]
|
upload_id = query['uploadId'][0]
|
||||||
part_number = int(query['partNumber'][0])
|
part_number = int(query['partNumber'][0])
|
||||||
if 'x-amz-copy-source' in request.headers:
|
if 'x-amz-copy-source' in request.headers:
|
||||||
src = request.headers.get("x-amz-copy-source").lstrip("/")
|
src = unquote(request.headers.get("x-amz-copy-source")).lstrip("/")
|
||||||
src_bucket, src_key = src.split("/", 1)
|
src_bucket, src_key = src.split("/", 1)
|
||||||
src_range = request.headers.get(
|
src_range = request.headers.get(
|
||||||
'x-amz-copy-source-range', '').split("bytes=")[-1]
|
'x-amz-copy-source-range', '').split("bytes=")[-1]
|
||||||
@ -673,7 +673,7 @@ class ResponseObject(_TemplateEnvironmentMixin):
|
|||||||
|
|
||||||
if 'x-amz-copy-source' in request.headers:
|
if 'x-amz-copy-source' in request.headers:
|
||||||
# Copy key
|
# Copy key
|
||||||
src_key_parsed = urlparse(request.headers.get("x-amz-copy-source"))
|
src_key_parsed = urlparse(unquote(request.headers.get("x-amz-copy-source")))
|
||||||
src_bucket, src_key = src_key_parsed.path.lstrip("/").split("/", 1)
|
src_bucket, src_key = src_key_parsed.path.lstrip("/").split("/", 1)
|
||||||
src_version_id = parse_qs(src_key_parsed.query).get(
|
src_version_id = parse_qs(src_key_parsed.query).get(
|
||||||
'versionId', [None])[0]
|
'versionId', [None])[0]
|
||||||
|
Loading…
Reference in New Issue
Block a user