Skip to content

Commit 6ded6f8

Browse files
authored
feat: Add ListCaches (#10)
* feat: Add ListCaches * update token logic
1 parent ccec70f commit 6ded6f8

File tree

4 files changed

+34
-7
lines changed

4 files changed

+34
-7
lines changed

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ package_dir =
77
packages = find:
88
python_requires = >=3.6
99
install_requires =
10-
momento-wire-types==0.6.0
10+
momento-wire-types==0.7.0
1111
build
1212
setuptools
1313
pyjwt

src/momento/_cache_service_errors_converter.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,8 @@
99
grpc.StatusCode.PERMISSION_DENIED: errors.PermissionError,
1010
}
1111

12-
# Till the time MR2 stops returning errors in Enums
1312
__ecache_result_to_error = {
14-
cache_client_types.Bad_Request: errors.CacheValueError,
15-
cache_client_types.Internal_Server_Error: errors.InternalServerError,
16-
cache_client_types.Service_Unavailable: errors.InternalServerError,
17-
cache_client_types.Unauthorized: errors.PermissionError,
13+
cache_client_types.Invalid: errors.InternalServerError,
1814
}
1915

2016

src/momento/cache_operation_responses.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,25 @@ def __init__(self, grpc_create_cache_response):
5858
class DeleteCacheResponse:
5959
def __init__(self, grpc_delete_cache_response):
6060
pass
61+
62+
63+
class ListCachesResponse:
64+
def __init__(self, grpc_list_cache_response):
65+
self._next_token = grpc_list_cache_response.next_token if grpc_list_cache_response.next_token != '' else None
66+
self._caches = []
67+
for cache in grpc_list_cache_response.cache:
68+
self._caches.append(CacheInfo(cache))
69+
70+
def next_token(self):
71+
return self._next_token
72+
73+
def caches(self):
74+
return self._caches
75+
76+
77+
class CacheInfo:
78+
def __init__(self, grpc_listed_caches):
79+
self._name = grpc_listed_caches.cache_name
80+
81+
def name(self):
82+
return self._name

src/momento/momento.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import grpc
22
import momento_wire_types.controlclient_pb2_grpc as control_client
33

4-
from momento_wire_types.controlclient_pb2 import CreateCacheRequest
4+
from momento_wire_types.controlclient_pb2 import CreateCacheRequest, ListCachesRequest
55
from momento_wire_types.controlclient_pb2 import DeleteCacheRequest
66
from . import _cache_service_errors_converter
77
from . import errors
@@ -10,6 +10,7 @@
1010
from . import _momento_endpoint_resolver
1111
from .cache_operation_responses import CreateCacheResponse
1212
from .cache_operation_responses import DeleteCacheResponse
13+
from .cache_operation_responses import ListCachesResponse
1314

1415

1516
class Momento:
@@ -61,6 +62,14 @@ def get_cache(self, cache_name, ttl_seconds, create_if_absent=False):
6162
self.create_cache(cache_name)
6263
return cache._connect()
6364

65+
def list_caches(self, next_token=None):
66+
try:
67+
list_caches_request = ListCachesRequest()
68+
list_caches_request.next_token = next_token if next_token is not None else ''
69+
return ListCachesResponse(self._client.ListCaches(list_caches_request))
70+
except Exception as e:
71+
raise _cache_service_errors_converter.convert(e)
72+
6473

6574
def init(auth_token):
6675
return Momento(auth_token)

0 commit comments

Comments
 (0)