Skip to content

Commit fba10e4

Browse files
2 parents c556453 + a558c0b commit fba10e4

File tree

14 files changed

+51
-32
lines changed

14 files changed

+51
-32
lines changed

src/momento/auth_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from momento.config.auth_configuration import AuthConfiguration
1010
from momento.internal.synchronous._scs_token_client import _ScsTokenClient
1111
from momento.responses.auth.generate_disposable_token import GenerateDisposableTokenResponse
12-
from momento.utilities.expiration import ExpiresIn
12+
from momento.utilities import ExpiresIn
1313

1414

1515
class AuthClient:

src/momento/auth_client_async.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from momento.config.auth_configuration import AuthConfiguration
1010
from momento.internal.aio._scs_token_client import _ScsTokenClient
1111
from momento.responses.auth.generate_disposable_token import GenerateDisposableTokenResponse
12-
from momento.utilities.expiration import ExpiresIn
12+
from momento.utilities import ExpiresIn
1313

1414

1515
class AuthClientAsync:

src/momento/cache_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
from momento.auth import CredentialProvider
99
from momento.config import Configuration
1010
from momento.errors import UnknownException
11+
from momento.internal._utilities import _validate_eager_connection_timeout
1112
from momento.requests import CollectionTtl, SortOrder
1213
from momento.utilities.shared_sync_asyncio import (
1314
DEFAULT_EAGER_CONNECTION_TIMEOUT_SECONDS,
14-
validate_eager_connection_timeout,
1515
)
1616

1717
try:
@@ -206,7 +206,7 @@ def create(
206206
eager_connection_timeout = timedelta(seconds=30)
207207
client = CacheClient.create(configuration, credential_provider, ttl_seconds, eager_connection_timeout)
208208
"""
209-
validate_eager_connection_timeout(eager_connection_timeout)
209+
_validate_eager_connection_timeout(eager_connection_timeout)
210210
# an explicit 0 means that the client disabled eager connections
211211
if eager_connection_timeout.total_seconds() != 0:
212212
client = CacheClient(configuration, credential_provider, default_ttl)

src/momento/cache_client_async.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
from momento.auth import CredentialProvider
99
from momento.config import Configuration
1010
from momento.errors import UnknownException
11+
from momento.internal._utilities import _validate_eager_connection_timeout
1112
from momento.requests import CollectionTtl, SortOrder
1213
from momento.utilities.shared_sync_asyncio import (
1314
DEFAULT_EAGER_CONNECTION_TIMEOUT_SECONDS,
14-
validate_eager_connection_timeout,
1515
)
1616

1717
try:
@@ -207,7 +207,7 @@ async def create(
207207
eager_connection_timeout = timedelta(seconds=30)
208208
client = CacheClientAsync.create(configuration, credential_provider, ttl_seconds, eager_connection_timeout)
209209
"""
210-
validate_eager_connection_timeout(eager_connection_timeout)
210+
_validate_eager_connection_timeout(eager_connection_timeout)
211211
# an explicit 0 means that the client disabled eager connections
212212
if eager_connection_timeout.total_seconds() != 0:
213213
client = CacheClientAsync(configuration, credential_provider, default_ttl)

src/momento/internal/_utilities/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
_gen_set_input_as_bytes,
88
_validate_cache_name,
99
_validate_dictionary_name,
10+
_validate_disposable_token_expiry,
11+
_validate_eager_connection_timeout,
1012
_validate_list_name,
1113
_validate_request_timeout,
1214
_validate_set_name,

src/momento/internal/_utilities/_data_validation.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
TSortedSetElements,
1616
TSortedSetValues,
1717
)
18+
from momento.utilities import ExpiresIn
1819

1920
DEFAULT_BYTES_CONVERSION_ERROR = "Could not convert the given type to bytes: "
2021
DEFAULT_LIST_CONVERSION_ERROR = "The given type is not list[str | bytes]: "
@@ -137,3 +138,17 @@ def _validate_request_timeout(request_timeout: Optional[timedelta]) -> None:
137138
if request_timeout is None:
138139
return
139140
_validate_timedelta_ttl(ttl=request_timeout, field_name="Request timeout")
141+
142+
143+
def _validate_eager_connection_timeout(timeout: timedelta) -> None:
144+
if timeout.total_seconds() < 0:
145+
raise ValueError("The eager connection timeout must be greater than or equal to 0 seconds.")
146+
147+
148+
def _validate_disposable_token_expiry(expires_in: ExpiresIn) -> None:
149+
if not expires_in.does_expire():
150+
raise ValueError("Disposable tokens must have an expiry")
151+
if expires_in.valid_for_seconds() < 0:
152+
raise ValueError("Disposable token expiry must be positive")
153+
if expires_in.valid_for_seconds() > 60 * 60:
154+
raise ValueError("Disposable tokens must expire within 1 hour")

src/momento/internal/_utilities/_permissions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
TopicPermission,
2626
TopicRole,
2727
)
28-
from tests.utils import str_to_bytes
28+
from momento.utilities.shared_sync_asyncio import str_to_bytes
2929

3030

3131
class SuperuserPermissions(PredefinedScope):

src/momento/internal/aio/_scs_token_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
from momento.auth.credential_provider import CredentialProvider
99
from momento.config.auth_configuration import AuthConfiguration
1010
from momento.errors.error_converter import convert_error
11+
from momento.internal._utilities._data_validation import _validate_disposable_token_expiry
1112
from momento.internal._utilities._permissions import permissions_from_disposable_token_scope
1213
from momento.internal.aio._scs_grpc_manager import _TokenGrpcManager
1314
from momento.internal.services import Service
1415
from momento.responses.auth.generate_disposable_token import GenerateDisposableToken, GenerateDisposableTokenResponse
15-
from momento.utilities.expiration import ExpiresIn
16-
from momento.utilities.shared_sync_asyncio import validate_disposable_token_expiry
16+
from momento.utilities import ExpiresIn
1717

1818

1919
class _ScsTokenClient:
@@ -38,7 +38,7 @@ async def generate_disposable_token(
3838
disposable_token_props: Optional[DisposableTokenProps] = None,
3939
) -> GenerateDisposableTokenResponse:
4040
try:
41-
validate_disposable_token_expiry(expires_in)
41+
_validate_disposable_token_expiry(expires_in)
4242
self._logger.info("Creating disposable token")
4343

4444
token_id = disposable_token_props.token_id if disposable_token_props else None

src/momento/internal/synchronous/_scs_token_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
from momento.auth.credential_provider import CredentialProvider
99
from momento.config.auth_configuration import AuthConfiguration
1010
from momento.errors.error_converter import convert_error
11+
from momento.internal._utilities._data_validation import _validate_disposable_token_expiry
1112
from momento.internal._utilities._permissions import permissions_from_disposable_token_scope
1213
from momento.internal.services import Service
1314
from momento.internal.synchronous._scs_grpc_manager import _TokenGrpcManager
1415
from momento.responses.auth.generate_disposable_token import GenerateDisposableToken, GenerateDisposableTokenResponse
15-
from momento.utilities.expiration import ExpiresIn
16-
from momento.utilities.shared_sync_asyncio import validate_disposable_token_expiry
16+
from momento.utilities import ExpiresIn
1717

1818

1919
class _ScsTokenClient:
@@ -38,7 +38,7 @@ def generate_disposable_token(
3838
disposable_token_props: Optional[DisposableTokenProps] = None,
3939
) -> GenerateDisposableTokenResponse:
4040
try:
41-
validate_disposable_token_expiry(expires_in)
41+
_validate_disposable_token_expiry(expires_in)
4242
self._logger.info("Creating disposable token")
4343

4444
token_id = disposable_token_props.token_id if disposable_token_props else None

src/momento/responses/auth/generate_disposable_token.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from momento_wire_types import token_pb2 as token_pb
99

1010
from momento.responses.response import AuthResponse
11-
from momento.utilities.expiration import ExpiresAt
11+
from momento.utilities import ExpiresAt
1212

1313
from ..mixins import ErrorResponseMixin
1414

0 commit comments

Comments
 (0)