diff --git a/dinamis_sdk/s3.py b/dinamis_sdk/s3.py index ea7318a7b06d34f73b36e73ba581f37a03e40285..ef210fde0e040654545b2e48340d2a5ae0dac15b 100644 --- a/dinamis_sdk/s3.py +++ b/dinamis_sdk/s3.py @@ -27,7 +27,7 @@ import packaging.version import pydantic from .utils import log, SIGNED_URL_TTL_MARGIN, CREDENTIALS, MAX_URLS, \ - S3_SIGNING_ENDPOINT, S3_STORAGE_DOMAIN + S3_SIGNING_ENDPOINT, S3_STORAGE_DOMAIN, SIGNED_URL_DURATION_SECONDS _PYDANTIC_2_0 = packaging.version.parse( pydantic.__version__ @@ -487,9 +487,12 @@ def get_signed_urls( chunk_start = i_chunk * MAX_URLS chunk_end = min(chunk_start + MAX_URLS, n_urls) not_signed_urls_chunk = not_signed_urls[chunk_start:chunk_end] + params={"urls": not_signed_urls_chunk} + if SIGNED_URL_DURATION_SECONDS: + params.update({"duration_seconds": SIGNED_URL_DURATION_SECONDS}) response = session.post( f"{S3_SIGNING_ENDPOINT}sign_urls", - params={"urls": not_signed_urls_chunk}, + params=params, headers=headers, timeout=10 ) diff --git a/dinamis_sdk/utils.py b/dinamis_sdk/utils.py index ce4a94b9e83e47b47b4ae192beb5f7d286a905ea..20c6b124700aafb4692c6cb34e0337adc1489036 100644 --- a/dinamis_sdk/utils.py +++ b/dinamis_sdk/utils.py @@ -9,17 +9,27 @@ import requests logging.basicConfig(level=os.environ.get("LOGLEVEL") or "INFO") log = logging.getLogger("dinamis_sdk") +def _get_seconds(env_var_name: str) -> int: + val = os.environ.get(env_var_name) + if val: + if val.isdigit(): + return int(val) + return None + # Signed TTL margin default to 1800 seconds (30 minutes), or env. var. -ttl_margin_from_env = os.environ.get("DINAMIS_SDK_TTL_MARGIN") -if ttl_margin_from_env: - if ttl_margin_from_env.isdigit(): - ttl_margin_from_env = int(ttl_margin_from_env) - log.info( - "Setting TTL margin from environment variable to %s seconds", - ttl_margin_from_env - ) +ttl_margin_from_env = _get_seconds("DINAMIS_SDK_TTL_MARGIN") +log.info( + "Setting TTL margin from environment variable to %s seconds", + ttl_margin_from_env +) SIGNED_URL_TTL_MARGIN = ttl_margin_from_env or 1800 +SIGNED_URL_DURATION_SECONDS = _get_seconds("DINAMIS_SDK_DURATION_SECONDS") +log.info( + "Setting duration seconds from environment variable to %s seconds", + SIGNED_URL_DURATION_SECONDS +) + MAX_URLS = 64 S3_STORAGE_DOMAIN = "meso.umontpellier.fr" S3_SIGNING_ENDPOINT = \ diff --git a/setup.py b/setup.py index af02b546cfa1a27fbbe4784a47251e29f6142495..af91b5df3b18c46b7912d00d7f6bc7f07f910a20 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ install_requires = [ setup( name="dinamis-sdk", - version="0.0.16", + version="0.1.0", description="DINAMIS SDK", python_requires=">=3.8", author="Remi Cresson",