url decode x-amz-copy-source as per s3 nodejs documentation

This commit is contained in:
Ciprian Radulescu 2018-01-14 18:49:47 +02:00
parent 3cede60f5b
commit ef9b229acc

View File

@ -4,7 +4,7 @@ import re
import six
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
@ -631,7 +631,7 @@ class ResponseObject(_TemplateEnvironmentMixin):
upload_id = query['uploadId'][0]
part_number = int(query['partNumber'][0])
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_range = request.headers.get(
'x-amz-copy-source-range', '').split("bytes=")[-1]
@ -673,7 +673,7 @@ class ResponseObject(_TemplateEnvironmentMixin):
if 'x-amz-copy-source' in request.headers:
# 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_version_id = parse_qs(src_key_parsed.query).get(
'versionId', [None])[0]