Skip to content

Commit 9f126c8

Browse files
author
Nick Zaccardi
authored
Merge pull request #41 from level12/fix-azure-path-handling
Escape blob name before putting in final URL
2 parents 737be43 + 258f46f commit 9f126c8

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

keg_storage/backends/azure.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,8 @@ def _create_sas_url(self, path: str, sas_permissions: str,
321321
expiry=expire,
322322
ip=ip
323323
)
324-
url = urllib.parse.urljoin(self.account_url, '{}/{}'.format(self.bucket, path))
324+
escaped_path = urllib.parse.quote(path, safe="")
325+
url = urllib.parse.urljoin(self.account_url, '{}/{}'.format(self.bucket, escaped_path))
325326
return '{}?{}'.format(url, token)
326327

327328
def create_container_url(self, expire: typing.Union[arrow.Arrow, datetime],

keg_storage/tests/test_backend_azure.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ def test_upload_url(self, expire: Union[arrow.Arrow, datetime.datetime]):
267267
)
268268
parsed = urlparse.urlparse(url)
269269
assert parsed.netloc == 'foo.blob.core.windows.net'
270-
assert parsed.path == '/test/abc/def.txt'
270+
assert parsed.path == '/test/abc%2Fdef.txt'
271271
qs = urlparse.parse_qs(parsed.query)
272272

273273
assert qs['se'] == ['2019-01-02T03:04:05Z']
@@ -283,7 +283,7 @@ def test_upload_url(self, expire: Union[arrow.Arrow, datetime.datetime]):
283283
)
284284
parsed = urlparse.urlparse(url)
285285
assert parsed.netloc == 'foo.blob.core.windows.net'
286-
assert parsed.path == '/test/abc/def.txt'
286+
assert parsed.path == '/test/abc%2Fdef.txt'
287287
qs = urlparse.parse_qs(parsed.query)
288288

289289
assert qs['se'] == ['2019-01-02T03:04:05Z']
@@ -303,7 +303,7 @@ def test_download_url(self, expire: Union[arrow.Arrow, datetime.datetime]):
303303
)
304304
parsed = urlparse.urlparse(url)
305305
assert parsed.netloc == 'foo.blob.core.windows.net'
306-
assert parsed.path == '/test/abc/def.txt'
306+
assert parsed.path == '/test/abc%2Fdef.txt'
307307
qs = urlparse.parse_qs(parsed.query)
308308

309309
assert qs['se'] == ['2019-01-02T03:04:05Z']
@@ -320,7 +320,7 @@ def test_download_url(self, expire: Union[arrow.Arrow, datetime.datetime]):
320320
)
321321
parsed = urlparse.urlparse(url)
322322
assert parsed.netloc == 'foo.blob.core.windows.net'
323-
assert parsed.path == '/test/abc/def.txt'
323+
assert parsed.path == '/test/abc%2Fdef.txt'
324324
qs = urlparse.parse_qs(parsed.query)
325325

326326
assert qs['se'] == ['2019-01-02T03:04:05Z']

0 commit comments

Comments
 (0)