momento 0.2.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/.release-please-manifest.json +1 -1
  3. data/.rubocop.yml +14 -1
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +105 -0
  6. data/CONTRIBUTING.md +5 -6
  7. data/Gemfile +1 -6
  8. data/Gemfile.lock +34 -28
  9. data/README.md +64 -44
  10. data/README.template.md +30 -25
  11. data/examples/.gitignore +1 -0
  12. data/examples/Gemfile +1 -1
  13. data/examples/README.md +5 -6
  14. data/examples/compact.rb +13 -9
  15. data/examples/example.rb +24 -8
  16. data/examples/file.rb +7 -6
  17. data/lib/README-generating-pb.txt +1 -1
  18. data/lib/momento/auth/credential_provider.rb +78 -0
  19. data/lib/momento/cache_client.rb +478 -0
  20. data/lib/momento/collection_ttl.rb +79 -0
  21. data/lib/momento/config/configuration.rb +42 -0
  22. data/lib/momento/config/configurations.rb +24 -0
  23. data/lib/momento/config/transport/grpc_configuration.rb +35 -0
  24. data/lib/momento/config/transport/static_transport_strategy.rb +12 -0
  25. data/lib/momento/config/transport/transport_strategy.rb +16 -0
  26. data/lib/momento/error/types.rb +22 -0
  27. data/lib/momento/generated/README.md +16 -0
  28. data/lib/momento/generated/auth_pb.rb +52 -0
  29. data/lib/momento/generated/auth_services_pb.rb +27 -0
  30. data/lib/momento/generated/cacheclient_pb.rb +203 -0
  31. data/lib/momento/generated/cacheclient_services_pb.rb +90 -0
  32. data/lib/momento/generated/cacheping_pb.rb +38 -0
  33. data/lib/momento/generated/cacheping_services_pb.rb +23 -0
  34. data/lib/momento/generated/cachepubsub_pb.rb +48 -0
  35. data/lib/momento/generated/cachepubsub_services_pb.rb +56 -0
  36. data/lib/momento/generated/common_pb.rb +44 -0
  37. data/lib/momento/generated/controlclient_pb.rb +72 -0
  38. data/lib/momento/generated/controlclient_services_pb.rb +35 -0
  39. data/lib/momento/generated/extensions_pb.rb +35 -0
  40. data/lib/momento/generated/generate_protos.sh +47 -0
  41. data/lib/momento/generated/leaderboard_pb.rb +56 -0
  42. data/lib/momento/generated/leaderboard_services_pb.rb +57 -0
  43. data/lib/momento/generated/permissionmessages_pb.rb +48 -0
  44. data/lib/momento/generated/token_pb.rb +43 -0
  45. data/lib/momento/generated/token_services_pb.rb +23 -0
  46. data/lib/momento/generated/webhook_pb.rb +49 -0
  47. data/lib/momento/generated/webhook_services_pb.rb +32 -0
  48. data/lib/momento/response/control/create_cache_response.rb +61 -0
  49. data/lib/momento/{delete_cache_response_builder.rb → response/control/delete_cache_response.rb} +24 -3
  50. data/lib/momento/response/control/list_caches_response.rb +80 -0
  51. data/lib/momento/{delete_response_builder.rb → response/delete_response.rb} +24 -2
  52. data/lib/momento/{get_response.rb → response/get_response.rb} +39 -9
  53. data/lib/momento/{response.rb → response/response.rb} +11 -14
  54. data/lib/momento/response/set_response.rb +59 -0
  55. data/lib/momento/response/sort_order.rb +11 -0
  56. data/lib/momento/response/sorted_set/sorted_set_fetch_response.rb +107 -0
  57. data/lib/momento/response/sorted_set/sorted_set_put_element_response.rb +44 -0
  58. data/lib/momento/response/sorted_set/sorted_set_put_elements_response.rb +44 -0
  59. data/lib/momento/version.rb +1 -1
  60. data/lib/momento.rb +6 -1
  61. data/momento.gemspec +5 -3
  62. data/release-please-config.json +1 -1
  63. data/sig/momento/auth/credential_provider.rbs +11 -0
  64. data/sig/momento/cache_client.rbs +11 -0
  65. data/sig/momento/collection_ttl.rbs +22 -0
  66. data/sig/momento/config/configuration.rbs +13 -0
  67. data/sig/momento/config/configurations.rbs +9 -0
  68. data/sig/momento/config/transport/grpc_configuration.rbs +9 -0
  69. data/sig/momento/config/transport/transport_strategy.rbs +7 -0
  70. data/sig/momento/list_caches_response.rbs +7 -0
  71. data/sig/momento/sorted_set_fetch_response.rbs +13 -0
  72. data/sig/momento/sorted_set_put_element_response.rbs +5 -0
  73. data/sig/momento/sorted_set_put_elements_response.rbs +5 -0
  74. metadata +101 -40
  75. data/lib/momento/cacheclient_pb.rb +0 -334
  76. data/lib/momento/cacheclient_services_pb.rb +0 -44
  77. data/lib/momento/controlclient_pb.rb +0 -73
  78. data/lib/momento/controlclient_services_pb.rb +0 -31
  79. data/lib/momento/create_cache_response.rb +0 -37
  80. data/lib/momento/create_cache_response_builder.rb +0 -27
  81. data/lib/momento/delete_cache_response.rb +0 -24
  82. data/lib/momento/delete_response.rb +0 -24
  83. data/lib/momento/get_response_builder.rb +0 -37
  84. data/lib/momento/list_caches_response.rb +0 -77
  85. data/lib/momento/list_caches_response_builder.rb +0 -25
  86. data/lib/momento/set_response.rb +0 -39
  87. data/lib/momento/set_response_builder.rb +0 -25
  88. data/lib/momento/simple_cache_client.rb +0 -336
  89. /data/lib/momento/{response_builder.rb → response/response_builder.rb} +0 -0
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
4
+ # source: permissionmessages.proto
5
+
6
+ require 'google/protobuf'
7
+
8
+ descriptor_data = "\n\x18permissionmessages.proto\x12\x13permission_messages\"\x94\x01\n\x0bPermissions\x12?\n\nsuper_user\x18\x01 \x01(\x0e\x32).permission_messages.SuperUserPermissionsH\x00\x12<\n\x08\x65xplicit\x18\x02 \x01(\x0b\x32(.permission_messages.ExplicitPermissionsH\x00\x42\x06\n\x04kind\"P\n\x13\x45xplicitPermissions\x12\x39\n\x0bpermissions\x18\x01 \x03(\x0b\x32$.permission_messages.PermissionsType\"\xee\x08\n\x0fPermissionsType\x12R\n\x11\x63\x61\x63he_permissions\x18\x01 \x01(\x0b\x32\x35.permission_messages.PermissionsType.CachePermissionsH\x00\x12R\n\x11topic_permissions\x18\x02 \x01(\x0b\x32\x35.permission_messages.PermissionsType.TopicPermissionsH\x00\x1a\x05\n\x03\x41ll\x1a-\n\rCacheSelector\x12\x14\n\ncache_name\x18\x01 \x01(\tH\x00\x42\x06\n\x04kind\x1a@\n\x11\x43\x61\x63heItemSelector\x12\r\n\x03key\x18\x01 \x01(\x0cH\x00\x12\x14\n\nkey_prefix\x18\x02 \x01(\x0cH\x00\x42\x06\n\x04kind\x1a\xf5\x02\n\x10\x43\x61\x63hePermissions\x12,\n\x04role\x18\x01 \x01(\x0e\x32\x1e.permission_messages.CacheRole\x12>\n\nall_caches\x18\x02 \x01(\x0b\x32(.permission_messages.PermissionsType.AllH\x00\x12L\n\x0e\x63\x61\x63he_selector\x18\x03 \x01(\x0b\x32\x32.permission_messages.PermissionsType.CacheSelectorH\x00\x12=\n\tall_items\x18\x04 \x01(\x0b\x32(.permission_messages.PermissionsType.AllH\x01\x12O\n\ritem_selector\x18\x05 \x01(\x0b\x32\x36.permission_messages.PermissionsType.CacheItemSelectorH\x01\x42\x07\n\x05\x63\x61\x63heB\x0c\n\ncache_item\x1aJ\n\rTopicSelector\x12\x14\n\ntopic_name\x18\x01 \x01(\tH\x00\x12\x1b\n\x11topic_name_prefix\x18\x02 \x01(\tH\x00\x42\x06\n\x04kind\x1a\xee\x02\n\x10TopicPermissions\x12,\n\x04role\x18\x01 \x01(\x0e\x32\x1e.permission_messages.TopicRole\x12>\n\nall_caches\x18\x02 \x01(\x0b\x32(.permission_messages.PermissionsType.AllH\x00\x12L\n\x0e\x63\x61\x63he_selector\x18\x03 \x01(\x0b\x32\x32.permission_messages.PermissionsType.CacheSelectorH\x00\x12>\n\nall_topics\x18\x04 \x01(\x0b\x32(.permission_messages.PermissionsType.AllH\x01\x12L\n\x0etopic_selector\x18\x05 \x01(\x0b\x32\x32.permission_messages.PermissionsType.TopicSelectorH\x01\x42\x07\n\x05\x63\x61\x63heB\x07\n\x05topicB\x06\n\x04kind*[\n\tCacheRole\x12\x13\n\x0f\x43\x61\x63hePermitNone\x10\x00\x12\x12\n\x0e\x43\x61\x63heReadWrite\x10\x01\x12\x11\n\rCacheReadOnly\x10\x02\x12\x12\n\x0e\x43\x61\x63heWriteOnly\x10\x03*[\n\tTopicRole\x12\x13\n\x0fTopicPermitNone\x10\x00\x12\x12\n\x0eTopicReadWrite\x10\x01\x12\x11\n\rTopicReadOnly\x10\x02\x12\x12\n\x0eTopicWriteOnly\x10\x03*%\n\x14SuperUserPermissions\x12\r\n\tSuperUser\x10\x00\x42r\n\x18grpc.permission_messagesP\x01Z0github.com/momentohq/client-sdk-go;client_sdk_go\xaa\x02!Momento.Protos.PermissionMessagesb\x06proto3"
9
+
10
+ pool = Google::Protobuf::DescriptorPool.generated_pool
11
+
12
+ begin
13
+ pool.add_serialized_file(descriptor_data)
14
+ rescue TypeError
15
+ # Compatibility code: will be removed in the next major version.
16
+ require_relative 'google/protobuf/descriptor_pb'
17
+ parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
18
+ parsed.clear_dependency
19
+ serialized = parsed.class.encode(parsed)
20
+ file = pool.add_serialized_file(serialized)
21
+ warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
22
+ imports = []
23
+ imports.each do |type_name, expected_filename|
24
+ import_file = pool.lookup(type_name).file_descriptor
25
+ if import_file.name != expected_filename
26
+ warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
27
+ end
28
+ end
29
+ warn "Each proto file must use a consistent fully-qualified name."
30
+ warn "This will become an error in the next major version."
31
+ end
32
+
33
+ module MomentoProtos
34
+ module PermissionMessages
35
+ Permissions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.Permissions").msgclass
36
+ ExplicitPermissions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.ExplicitPermissions").msgclass
37
+ PermissionsType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.PermissionsType").msgclass
38
+ PermissionsType::All = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.PermissionsType.All").msgclass
39
+ PermissionsType::CacheSelector = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.PermissionsType.CacheSelector").msgclass
40
+ PermissionsType::CacheItemSelector = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.PermissionsType.CacheItemSelector").msgclass
41
+ PermissionsType::CachePermissions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.PermissionsType.CachePermissions").msgclass
42
+ PermissionsType::TopicSelector = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.PermissionsType.TopicSelector").msgclass
43
+ PermissionsType::TopicPermissions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.PermissionsType.TopicPermissions").msgclass
44
+ CacheRole = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.CacheRole").enummodule
45
+ TopicRole = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.TopicRole").enummodule
46
+ SuperUserPermissions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("permission_messages.SuperUserPermissions").enummodule
47
+ end
48
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
4
+ # source: token.proto
5
+
6
+ require 'google/protobuf'
7
+
8
+ require_relative 'permissionmessages_pb'
9
+
10
+ descriptor_data = "\n\x0btoken.proto\x12\x05token\x1a\x18permissionmessages.proto\"\xe5\x01\n\x1f_GenerateDisposableTokenRequest\x12?\n\x07\x65xpires\x18\x01 \x01(\x0b\x32..token._GenerateDisposableTokenRequest.Expires\x12\x12\n\nauth_token\x18\x02 \x01(\t\x12\x35\n\x0bpermissions\x18\x03 \x01(\x0b\x32 .permission_messages.Permissions\x12\x10\n\x08token_id\x18\x04 \x01(\t\x1a$\n\x07\x45xpires\x12\x19\n\x11valid_for_seconds\x18\x01 \x01(\r\"Z\n _GenerateDisposableTokenResponse\x12\x0f\n\x07\x61pi_key\x18\x01 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\x12\x13\n\x0bvalid_until\x18\x03 \x01(\x04\x32u\n\x05Token\x12l\n\x17GenerateDisposableToken\x12&.token._GenerateDisposableTokenRequest\x1a'.token._GenerateDisposableTokenResponse\"\x00\x42`\n\rmomento.tokenP\x01Z0github.com/momentohq/client-sdk-go;client_sdk_go\xaa\x02\x1aMomento.Protos.TokenClientb\x06proto3"
11
+
12
+ pool = Google::Protobuf::DescriptorPool.generated_pool
13
+
14
+ begin
15
+ pool.add_serialized_file(descriptor_data)
16
+ rescue TypeError
17
+ # Compatibility code: will be removed in the next major version.
18
+ require_relative 'google/protobuf/descriptor_pb'
19
+ parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
20
+ parsed.clear_dependency
21
+ serialized = parsed.class.encode(parsed)
22
+ file = pool.add_serialized_file(serialized)
23
+ warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
24
+ imports = [
25
+ ["permission_messages.Permissions", "permissionmessages.proto"]
26
+ ]
27
+ imports.each do |type_name, expected_filename|
28
+ import_file = pool.lookup(type_name).file_descriptor
29
+ if import_file.name != expected_filename
30
+ warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
31
+ end
32
+ end
33
+ warn "Each proto file must use a consistent fully-qualified name."
34
+ warn "This will become an error in the next major version."
35
+ end
36
+
37
+ module MomentoProtos
38
+ module Token
39
+ PB__GenerateDisposableTokenRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("token._GenerateDisposableTokenRequest").msgclass
40
+ PB__GenerateDisposableTokenRequest::Expires = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("token._GenerateDisposableTokenRequest.Expires").msgclass
41
+ PB__GenerateDisposableTokenResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("token._GenerateDisposableTokenResponse").msgclass
42
+ end
43
+ end
@@ -0,0 +1,23 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: token.proto for package 'token'
3
+
4
+ require 'grpc'
5
+ require_relative 'token_pb'
6
+
7
+ module MomentoProtos
8
+ module Token
9
+ module Token
10
+ class Service
11
+ include ::GRPC::GenericService
12
+
13
+ self.marshal_class_method = :encode
14
+ self.unmarshal_class_method = :decode
15
+ self.service_name = 'token.Token'
16
+
17
+ rpc :GenerateDisposableToken, ::Token::PB__GenerateDisposableTokenRequest, ::Token::PB__GenerateDisposableTokenResponse
18
+ end
19
+
20
+ Stub = Service.rpc_stub_class
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
4
+ # source: webhook.proto
5
+
6
+ require 'google/protobuf'
7
+
8
+ descriptor_data = "\n\rwebhook.proto\x12\x07webhook\"6\n\n_WebhookId\x12\x12\n\ncache_name\x18\x01 \x01(\t\x12\x14\n\x0cwebhook_name\x18\x02 \x01(\t\"z\n\x08_Webhook\x12'\n\nwebhook_id\x18\x01 \x01(\x0b\x32\x13.webhook._WebhookId\x12\x12\n\ntopic_name\x18\x02 \x01(\t\x12\x31\n\x0b\x64\x65stination\x18\x03 \x01(\x0b\x32\x1c.webhook._WebhookDestination\"8\n\x12_PutWebhookRequest\x12\"\n\x07webhook\x18\x01 \x01(\x0b\x32\x11.webhook._Webhook\",\n\x13_PutWebhookResponse\x12\x15\n\rsecret_string\x18\x01 \x01(\t\"@\n\x15_DeleteWebhookRequest\x12'\n\nwebhook_id\x18\x01 \x01(\x0b\x32\x13.webhook._WebhookId\"\x18\n\x16_DeleteWebhookResponse\")\n\x13_ListWebhookRequest\x12\x12\n\ncache_name\x18\x01 \x01(\t\";\n\x15_ListWebhooksResponse\x12\"\n\x07webhook\x18\x01 \x03(\x0b\x32\x11.webhook._Webhook\"D\n\x18_GetWebhookSecretRequest\x12\x12\n\ncache_name\x18\x01 \x01(\t\x12\x14\n\x0cwebhook_name\x18\x02 \x01(\t\"\\\n\x19_GetWebhookSecretResponse\x12\x12\n\ncache_name\x18\x01 \x01(\t\x12\x14\n\x0cwebhook_name\x18\x02 \x01(\t\x12\x15\n\rsecret_string\x18\x03 \x01(\t\"1\n\x13_WebhookDestination\x12\x12\n\x08post_url\x18\x01 \x01(\tH\x00\x42\x06\n\x04kind\"F\n\x1b_RotateWebhookSecretRequest\x12'\n\nwebhook_id\x18\x01 \x01(\x0b\x32\x13.webhook._WebhookId\"5\n\x1c_RotateWebhookSecretResponse\x12\x15\n\rsecret_string\x18\x01 \x01(\t2\xbb\x03\n\x07Webhook\x12I\n\nPutWebhook\x12\x1b.webhook._PutWebhookRequest\x1a\x1c.webhook._PutWebhookResponse\"\x00\x12R\n\rDeleteWebhook\x12\x1e.webhook._DeleteWebhookRequest\x1a\x1f.webhook._DeleteWebhookResponse\"\x00\x12N\n\x0cListWebhooks\x12\x1c.webhook._ListWebhookRequest\x1a\x1e.webhook._ListWebhooksResponse\"\x00\x12[\n\x10GetWebhookSecret\x12!.webhook._GetWebhookSecretRequest\x1a\".webhook._GetWebhookSecretResponse\"\x00\x12\x64\n\x13RotateWebhookSecret\x12$.webhook._RotateWebhookSecretRequest\x1a%.webhook._RotateWebhookSecretResponse\"\x00\x42[\n\x0cgrpc.webhookP\x01Z0github.com/momentohq/client-sdk-go;client_sdk_go\xaa\x02\x16Momento.Protos.Webhookb\x06proto3"
9
+
10
+ pool = Google::Protobuf::DescriptorPool.generated_pool
11
+
12
+ begin
13
+ pool.add_serialized_file(descriptor_data)
14
+ rescue TypeError
15
+ # Compatibility code: will be removed in the next major version.
16
+ require_relative 'google/protobuf/descriptor_pb'
17
+ parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
18
+ parsed.clear_dependency
19
+ serialized = parsed.class.encode(parsed)
20
+ file = pool.add_serialized_file(serialized)
21
+ warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
22
+ imports = []
23
+ imports.each do |type_name, expected_filename|
24
+ import_file = pool.lookup(type_name).file_descriptor
25
+ if import_file.name != expected_filename
26
+ warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
27
+ end
28
+ end
29
+ warn "Each proto file must use a consistent fully-qualified name."
30
+ warn "This will become an error in the next major version."
31
+ end
32
+
33
+ module MomentoProtos
34
+ module Webhook
35
+ PB__WebhookId = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._WebhookId").msgclass
36
+ PB__Webhook = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._Webhook").msgclass
37
+ PB__PutWebhookRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._PutWebhookRequest").msgclass
38
+ PB__PutWebhookResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._PutWebhookResponse").msgclass
39
+ PB__DeleteWebhookRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._DeleteWebhookRequest").msgclass
40
+ PB__DeleteWebhookResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._DeleteWebhookResponse").msgclass
41
+ PB__ListWebhookRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._ListWebhookRequest").msgclass
42
+ PB__ListWebhooksResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._ListWebhooksResponse").msgclass
43
+ PB__GetWebhookSecretRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._GetWebhookSecretRequest").msgclass
44
+ PB__GetWebhookSecretResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._GetWebhookSecretResponse").msgclass
45
+ PB__WebhookDestination = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._WebhookDestination").msgclass
46
+ PB__RotateWebhookSecretRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._RotateWebhookSecretRequest").msgclass
47
+ PB__RotateWebhookSecretResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("webhook._RotateWebhookSecretResponse").msgclass
48
+ end
49
+ end
@@ -0,0 +1,32 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: webhook.proto for package 'webhook'
3
+
4
+ require 'grpc'
5
+ require_relative 'webhook_pb'
6
+
7
+ module MomentoProtos
8
+ module Webhook
9
+ module Webhook
10
+ # A Webhook is a mechanism to consume messages on a Topic.
11
+ # The primary purpose of webhooks in Momento is to enable
12
+ # Lambda to be a subscriber to the messages sent on a topic.
13
+ # Secondarily, webhooks open us up to a whole lot of integrations
14
+ # (slack, discord, event bridge, etc).
15
+ class Service
16
+ include ::GRPC::GenericService
17
+
18
+ self.marshal_class_method = :encode
19
+ self.unmarshal_class_method = :decode
20
+ self.service_name = 'webhook.Webhook'
21
+
22
+ rpc :PutWebhook, ::Webhook::PB__PutWebhookRequest, ::Webhook::PB__PutWebhookResponse
23
+ rpc :DeleteWebhook, ::Webhook::PB__DeleteWebhookRequest, ::Webhook::PB__DeleteWebhookResponse
24
+ rpc :ListWebhooks, ::Webhook::PB__ListWebhookRequest, ::Webhook::PB__ListWebhooksResponse
25
+ rpc :GetWebhookSecret, ::Webhook::PB__GetWebhookSecretRequest, ::Webhook::PB__GetWebhookSecretResponse
26
+ rpc :RotateWebhookSecret, ::Webhook::PB__RotateWebhookSecretRequest, ::Webhook::PB__RotateWebhookSecretResponse
27
+ end
28
+
29
+ Stub = Service.rpc_stub_class
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,61 @@
1
+ require_relative '../error'
2
+ require_relative '../../generated/controlclient_pb'
3
+
4
+ module Momento
5
+ # A response from creating a cache.
6
+ class CreateCacheResponse < Response
7
+ # Does the cache already exist?
8
+ # @return [Boolean]
9
+ def already_exists?
10
+ false
11
+ end
12
+
13
+ # Was the cache created?
14
+ # @return [Boolean]
15
+ def success?
16
+ false
17
+ end
18
+
19
+ # @private
20
+ class AlreadyExists < CreateCacheResponse
21
+ def already_exists?
22
+ true
23
+ end
24
+ end
25
+
26
+ # @private
27
+ class Success < CreateCacheResponse
28
+ def success?
29
+ true
30
+ end
31
+ end
32
+
33
+ # @private
34
+ class Error < CreateCacheResponse
35
+ include ::Momento::Response::Error
36
+ end
37
+ end
38
+
39
+ # @private
40
+ class CreateCacheResponseBuilder < ResponseBuilder
41
+ # Build a Momento::CreateCacheResponse from a block of code
42
+ # which returns a Momento::ControlClient::CreateCacheResponse.
43
+ #
44
+ # @return [Momento::CreateCacheResponse]
45
+ # @raise [StandardError] when the exception is not recognized.
46
+ # @raise [TypeError] when the response is not recognized.
47
+ def from_block
48
+ response = yield
49
+ rescue GRPC::AlreadyExists
50
+ return CreateCacheResponse::AlreadyExists.new
51
+ rescue *RESCUED_EXCEPTIONS => e
52
+ CreateCacheResponse::Error.new(
53
+ exception: e, context: context
54
+ )
55
+ else
56
+ raise TypeError unless response.is_a?(::MomentoProtos::ControlClient::PB__CreateCacheResponse)
57
+
58
+ return CreateCacheResponse::Success.new
59
+ end
60
+ end
61
+ end
@@ -1,7 +1,28 @@
1
- require 'grpc'
2
- require_relative 'controlclient_pb'
1
+ require_relative '../error'
2
+ require_relative '../../generated/controlclient_pb'
3
3
 
4
4
  module Momento
5
+ # A response from deleting a cache.
6
+ class DeleteCacheResponse < Response
7
+ # Was the cache deleted?
8
+ # @return [Boolean]
9
+ def success?
10
+ false
11
+ end
12
+
13
+ # @private
14
+ class Error < DeleteCacheResponse
15
+ include ::Momento::Response::Error
16
+ end
17
+
18
+ # @private
19
+ class Success < DeleteCacheResponse
20
+ def success?
21
+ true
22
+ end
23
+ end
24
+ end
25
+
5
26
  # @private
6
27
  class DeleteCacheResponseBuilder < ResponseBuilder
7
28
  # Build a Momento::DeleteCacheResponse from a block of code
@@ -17,7 +38,7 @@ module Momento
17
38
  exception: e, context: context
18
39
  )
19
40
  else
20
- raise TypeError unless response.is_a?(::Momento::ControlClient::DeleteCacheResponse)
41
+ raise TypeError unless response.is_a?(::MomentoProtos::ControlClient::PB__DeleteCacheResponse)
21
42
 
22
43
  return DeleteCacheResponse::Success.new
23
44
  end
@@ -0,0 +1,80 @@
1
+ require_relative '../error'
2
+ require_relative '../../generated/controlclient_pb'
3
+
4
+ module Momento
5
+ # A response from listing the caches.
6
+ class ListCachesResponse < Response
7
+ # Did it get a list of caches?
8
+ # @return [Boolean]
9
+ def success?
10
+ false
11
+ end
12
+
13
+ # The names of the caches.
14
+ # @return [Array,nil]
15
+ def cache_names
16
+ nil
17
+ end
18
+
19
+ # @!method to_s
20
+ # Displays the response and the list of cache names.
21
+ # The list of cache names will be truncated.
22
+ # @return [String]
23
+
24
+ # @private
25
+ class Success < ListCachesResponse
26
+ CACHE_NAMES_TO_DISPLAY = 5
27
+
28
+ # rubocop:disable Lint/MissingSuper
29
+ def initialize(grpc_response:)
30
+ @grpc_response = grpc_response
31
+ end
32
+ # rubocop:enable Lint/MissingSuper
33
+
34
+ def success?
35
+ true
36
+ end
37
+
38
+ def cache_names
39
+ @grpc_response.cache.map(&:cache_name)
40
+ end
41
+
42
+ def to_s
43
+ "#{super}: #{display_cache_names}"
44
+ end
45
+
46
+ private
47
+
48
+ def display_cache_names
49
+ display = cache_names&.take(CACHE_NAMES_TO_DISPLAY)&.join(", ")
50
+ cache_names&.size&.>(CACHE_NAMES_TO_DISPLAY) ? "#{display}, ..." : display.to_s
51
+ end
52
+ end
53
+
54
+ # @private
55
+ class Error < ListCachesResponse
56
+ include ::Momento::Response::Error
57
+ end
58
+ end
59
+
60
+ # @private
61
+ class ListCachesResponseBuilder < ResponseBuilder
62
+ # Build a Momento::ListCachesResponse from a block of code
63
+ # which returns a Momento::ControlClient::ListCachesResponse..
64
+ #
65
+ # @return [Momento::ListCachesResponse]
66
+ # @raise [StandardError] when the exception is not recognized.
67
+ # @raise [TypeError] when the response is not recognized.
68
+ def from_block
69
+ response = yield
70
+ rescue GRPC::BadStatus => e
71
+ ListCachesResponse::Error.new(
72
+ exception: e, context: context
73
+ )
74
+ else
75
+ raise TypeError unless response.is_a?(::MomentoProtos::ControlClient::PB__ListCachesResponse)
76
+
77
+ return ListCachesResponse::Success.new(grpc_response: response)
78
+ end
79
+ end
80
+ end
@@ -1,7 +1,29 @@
1
+ require_relative 'error'
1
2
  require 'grpc'
2
- require_relative 'cacheclient_pb'
3
+ require_relative '../generated/cacheclient_pb'
3
4
 
4
5
  module Momento
6
+ # A response from deleting a key.
7
+ class DeleteResponse < Response
8
+ # Was the key deleted?
9
+ # @return [Boolean]
10
+ def success?
11
+ false
12
+ end
13
+
14
+ # @private
15
+ class Success < DeleteResponse
16
+ def success?
17
+ true
18
+ end
19
+ end
20
+
21
+ # @private
22
+ class Error < DeleteResponse
23
+ include Momento::Response::Error
24
+ end
25
+ end
26
+
5
27
  # @private
6
28
  class DeleteResponseBuilder < ResponseBuilder
7
29
  # Build a Momento::DeleteResponse from a block of code
@@ -15,7 +37,7 @@ module Momento
15
37
  rescue *RESCUED_EXCEPTIONS => e
16
38
  DeleteResponse::Error.new(exception: e, context: context)
17
39
  else
18
- raise TypeError unless response.is_a?(::Momento::CacheClient::DeleteResponse)
40
+ raise TypeError unless response.is_a?(::MomentoProtos::CacheClient::PB__DeleteResponse)
19
41
 
20
42
  DeleteResponse::Success.new
21
43
  end
@@ -1,4 +1,5 @@
1
- require_relative 'response/error'
1
+ require_relative 'error'
2
+ require_relative '../generated/cacheclient_pb'
2
3
 
3
4
  module Momento
4
5
  # A response containing the value retrieved from a cache.
@@ -22,15 +23,12 @@ module Momento
22
23
  nil
23
24
  end
24
25
 
25
- # The gotten value, if any, as a string using your default encoding or specified one.
26
+ # The gotten value, if any, as a UTF-8 string.
26
27
  #
27
- # @param encoding [Encoding] defaults to Encoding.default_external
28
- # @return [String,nil] the value, if any, re-encoded
29
- # rubocop:disable Lint/UnusedMethodArgument
30
- def value_string(encoding = Encoding.default_external)
28
+ # @return [String,nil] the value, if any.
29
+ def value_string
31
30
  nil
32
31
  end
33
- # rubocop:enable Lint/UnusedMethodArgument
34
32
 
35
33
  # @!method to_s
36
34
  # Displays the response and the value, if any.
@@ -53,8 +51,8 @@ module Momento
53
51
  @grpc_response.cache_body
54
52
  end
55
53
 
56
- def value_string(encoding = Encoding.default_external)
57
- value_bytes.dup.force_encoding(encoding)
54
+ def value_string
55
+ value_bytes.dup.force_encoding('UTF-8')
58
56
  end
59
57
 
60
58
  def to_s
@@ -74,4 +72,36 @@ module Momento
74
72
  include Momento::Response::Error
75
73
  end
76
74
  end
75
+
76
+ # @private
77
+ class GetResponseBuilder < ResponseBuilder
78
+ # Build a Momento::GetResponse from a block of code
79
+ # which returns a Momento::ControlClient::GetResponse.
80
+ #
81
+ # @return [Momento::GetResponse]
82
+ # @raise [StandardError] when the exception is not recognized.
83
+ # @raise [TypeError] when the response is not recognized.
84
+ def from_block
85
+ response = yield
86
+ rescue *RESCUED_EXCEPTIONS => e
87
+ GetResponse::Error.new(exception: e, context: context)
88
+ else
89
+ from_response(response)
90
+ end
91
+
92
+ private
93
+
94
+ def from_response(response)
95
+ raise TypeError unless response.is_a?(MomentoProtos::CacheClient::PB__GetResponse)
96
+
97
+ case response.result
98
+ when :Hit
99
+ GetResponse::Hit.new(grpc_response: response)
100
+ when :Miss
101
+ GetResponse::Miss.new
102
+ else
103
+ raise "Unknown get result: #{response.result}"
104
+ end
105
+ end
106
+ end
77
107
  end
@@ -1,27 +1,24 @@
1
1
  require 'grpc'
2
- require_relative 'response/error'
3
2
  require_relative 'error'
4
- require_relative 'error/grpc_details'
5
- require_relative 'error/transport_details'
6
- require_relative 'error_builder'
3
+ require_relative '../error'
4
+ require_relative '../error/grpc_details'
5
+ require_relative '../error/transport_details'
6
+ require_relative '../error_builder'
7
7
  require_relative 'response_builder'
8
- require_relative 'create_cache_response'
9
- require_relative 'create_cache_response_builder'
8
+ require_relative 'control/create_cache_response'
10
9
  require_relative 'delete_response'
11
- require_relative 'delete_response_builder'
12
- require_relative 'delete_cache_response'
13
- require_relative 'delete_cache_response_builder'
10
+ require_relative 'control/delete_cache_response'
14
11
  require_relative 'get_response'
15
- require_relative 'get_response_builder'
16
- require_relative 'list_caches_response'
17
- require_relative 'list_caches_response_builder'
12
+ require_relative 'control/list_caches_response'
18
13
  require_relative 'set_response'
19
- require_relative 'set_response_builder'
14
+ require_relative 'sorted_set/sorted_set_put_element_response'
15
+ require_relative 'sorted_set/sorted_set_put_elements_response'
16
+ require_relative 'sorted_set/sorted_set_fetch_response'
20
17
 
21
18
  module Momento
22
19
  # The response from a Momento service request.
23
20
  #
24
- # {Momento::SimpleCacheClient} returns a response for both success
21
+ # {Momento::CacheClient} returns a response for both success
25
22
  # and error, as well as other states. See the documenation for each
26
23
  # type of response for more.
27
24
  #
@@ -0,0 +1,59 @@
1
+ require_relative 'error'
2
+ require_relative '../generated/cacheclient_pb'
3
+
4
+ module Momento
5
+ # A response from setting a key.
6
+ class SetResponse < Response
7
+ # Was the key/value pair added to the cache?
8
+ # @return [Boolean]
9
+ def success?
10
+ false
11
+ end
12
+
13
+ # @private
14
+ class Success < SetResponse
15
+ attr_accessor :key, :value
16
+
17
+ # rubocop:disable Lint/MissingSuper
18
+ def initialize(key:, value:)
19
+ @key = key
20
+ @value = value
21
+
22
+ return
23
+ end
24
+ # rubocop:enable Lint/MissingSuper
25
+
26
+ def success?
27
+ true
28
+ end
29
+
30
+ def to_s
31
+ "#{super}: '#{display_string(key)}' = '#{display_string(value)}'"
32
+ end
33
+ end
34
+
35
+ # @private
36
+ class Error < SetResponse
37
+ include Momento::Response::Error
38
+ end
39
+ end
40
+
41
+ # @private
42
+ class SetResponseBuilder < ResponseBuilder
43
+ # Build a Momento::SetResponse from a block of code
44
+ # which returns a Momento::CacheClient::SetResponse..
45
+ #
46
+ # @return [Momento::SetResponse]
47
+ # @raise [StandardError] when the exception is not recognized.
48
+ # @raise [TypeError] when the response is not recognized.
49
+ def from_block
50
+ response = yield
51
+ rescue *RESCUED_EXCEPTIONS => e
52
+ SetResponse::Error.new(exception: e, context: context)
53
+ else
54
+ raise TypeError unless response.is_a?(::MomentoProtos::CacheClient::PB__SetResponse)
55
+
56
+ SetResponse::Success.new(key: context[:key], value: context[:value])
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,11 @@
1
+ module Momento
2
+ # Represents whether a collection is sorted in ascending or descending fashion.
3
+ class SortOrder
4
+ ASCENDING = :ascending
5
+ DESCENDING = :descending
6
+
7
+ def self.valid?(order)
8
+ [ASCENDING, DESCENDING].include?(order)
9
+ end
10
+ end
11
+ end