diff --git a/.bumpversion.cfg b/.bumpversion.cfg index a55341b..c0ac5ca 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 1.22.1 +current_version = 1.22.2 commit = True tag = True diff --git a/servicelayer/__init__.py b/servicelayer/__init__.py index 8465d64..1b1c840 100644 --- a/servicelayer/__init__.py +++ b/servicelayer/__init__.py @@ -1,6 +1,6 @@ import logging -__version__ = "1.22.1" +__version__ = "1.22.2" logging.getLogger("boto3").setLevel(logging.WARNING) diff --git a/servicelayer/archive/gs.py b/servicelayer/archive/gs.py index 5eb8879..0a6eb62 100644 --- a/servicelayer/archive/gs.py +++ b/servicelayer/archive/gs.py @@ -161,7 +161,7 @@ def generate_url(self, content_hash, file_name=None, mime_type=None, expire=None return disposition = None if file_name is not None: - disposition = "inline; filename=%s" % file_name + disposition = "attachment; filename=%s" % file_name if expire is None: expire = datetime.utcnow() + timedelta(seconds=self.TIMEOUT) return blob.generate_signed_url( diff --git a/servicelayer/archive/s3.py b/servicelayer/archive/s3.py index 3216c1f..4b9c3b1 100644 --- a/servicelayer/archive/s3.py +++ b/servicelayer/archive/s3.py @@ -146,7 +146,7 @@ def generate_url(self, content_hash, file_name=None, mime_type=None, expire=None if mime_type is not None: params["ResponseContentType"] = mime_type if file_name is not None: - disposition = "inline; filename=%s" % file_name + disposition = "attachment; filename=%s" % file_name params["ResponseContentDisposition"] = disposition expires_in = self.TIMEOUT if expire is not None: diff --git a/setup.py b/setup.py index 916cbbd..224f9a8 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ setup( name="servicelayer", - version="1.22.1", + version="1.22.2", description="Basic remote service functions for alephdata components", classifiers=[ "Development Status :: 3 - Alpha", diff --git a/tests/archive/test_s3.py b/tests/archive/test_s3.py index 107d726..b7474ab 100644 --- a/tests/archive/test_s3.py +++ b/tests/archive/test_s3.py @@ -1,4 +1,5 @@ from unittest import TestCase +from urllib.parse import urlparse, parse_qs from moto import mock_s3 @@ -30,10 +31,28 @@ def test_basic_archive_with_checksum(self): assert checksum_ == out, (checksum_, out) def test_generate_url(self): - out = self.archive.archive_file(self.file) - url = self.archive.generate_url(out) - # assert False, url - assert url is not None, url + content_hash = self.archive.archive_file(self.file) + url = self.archive.generate_url(content_hash) + assert url is not None + + url = urlparse(url) + assert url.netloc == "foo.s3.amazonaws.com" + + def test_generate_url_headers(self): + content_hash = self.archive.archive_file(self.file) + url = self.archive.generate_url( + content_hash, + file_name="test.txt", + mime_type="text/plain", + ) + assert url is not None + + url = urlparse(url) + query = parse_qs(url.query) + assert query["response-content-type"] == ["text/plain"] + assert query["response-content-disposition"] == [ + "attachment; filename=test.txt" + ] def test_publish_file(self): assert self.archive.can_publish