momento 0.2.0 → 0.4.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.release-please-manifest.json +1 -1
- data/.rubocop.yml +14 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +91 -0
- data/CONTRIBUTING.md +5 -6
- data/Gemfile +1 -6
- data/Gemfile.lock +30 -24
- data/README.md +53 -43
- data/README.template.md +30 -25
- data/examples/Gemfile +1 -1
- data/examples/README.md +3 -3
- data/examples/compact.rb +12 -8
- data/examples/example.rb +13 -7
- data/examples/file.rb +6 -5
- data/lib/README-generating-pb.txt +1 -1
- data/lib/momento/auth/credential_provider.rb +78 -0
- data/lib/momento/cache_client.rb +457 -0
- data/lib/momento/collection_ttl.rb +79 -0
- data/lib/momento/config/configuration.rb +16 -0
- data/lib/momento/config/configurations.rb +17 -0
- data/lib/momento/config/transport/grpc_configuration.rb +25 -0
- data/lib/momento/config/transport/static_transport_strategy.rb +12 -0
- data/lib/momento/config/transport/transport_strategy.rb +16 -0
- data/lib/momento/error/types.rb +15 -0
- data/lib/momento/generated/README.md +16 -0
- data/lib/momento/generated/auth_pb.rb +52 -0
- data/lib/momento/generated/auth_services_pb.rb +27 -0
- data/lib/momento/generated/cacheclient_pb.rb +203 -0
- data/lib/momento/generated/cacheclient_services_pb.rb +90 -0
- data/lib/momento/generated/cacheping_pb.rb +38 -0
- data/lib/momento/generated/cacheping_services_pb.rb +23 -0
- data/lib/momento/generated/cachepubsub_pb.rb +48 -0
- data/lib/momento/generated/cachepubsub_services_pb.rb +56 -0
- data/lib/momento/generated/common_pb.rb +44 -0
- data/lib/momento/generated/controlclient_pb.rb +72 -0
- data/lib/momento/generated/controlclient_services_pb.rb +35 -0
- data/lib/momento/generated/extensions_pb.rb +35 -0
- data/lib/momento/generated/generate_protos.sh +47 -0
- data/lib/momento/generated/leaderboard_pb.rb +56 -0
- data/lib/momento/generated/leaderboard_services_pb.rb +57 -0
- data/lib/momento/generated/permissionmessages_pb.rb +48 -0
- data/lib/momento/generated/token_pb.rb +43 -0
- data/lib/momento/generated/token_services_pb.rb +23 -0
- data/lib/momento/generated/webhook_pb.rb +49 -0
- data/lib/momento/generated/webhook_services_pb.rb +32 -0
- data/lib/momento/response/control/create_cache_response.rb +61 -0
- data/lib/momento/{delete_cache_response_builder.rb → response/control/delete_cache_response.rb} +24 -3
- data/lib/momento/response/control/list_caches_response.rb +80 -0
- data/lib/momento/{delete_response_builder.rb → response/delete_response.rb} +24 -2
- data/lib/momento/{get_response.rb → response/get_response.rb} +39 -9
- data/lib/momento/{response.rb → response/response.rb} +11 -14
- data/lib/momento/response/set_response.rb +59 -0
- data/lib/momento/response/sort_order.rb +11 -0
- data/lib/momento/response/sorted_set/sorted_set_fetch_response.rb +107 -0
- data/lib/momento/response/sorted_set/sorted_set_put_element_response.rb +44 -0
- data/lib/momento/response/sorted_set/sorted_set_put_elements_response.rb +44 -0
- data/lib/momento/version.rb +1 -1
- data/lib/momento.rb +6 -1
- data/momento.gemspec +5 -3
- data/release-please-config.json +1 -1
- data/sig/momento/auth/credential_provider.rbs +11 -0
- data/sig/momento/cache_client.rbs +12 -0
- data/sig/momento/collection_ttl.rbs +22 -0
- data/sig/momento/config/configuration.rbs +9 -0
- data/sig/momento/config/configurations.rbs +9 -0
- data/sig/momento/config/transport/grpc_configuration.rbs +7 -0
- data/sig/momento/config/transport/transport_strategy.rbs +7 -0
- data/sig/momento/list_caches_response.rbs +7 -0
- data/sig/momento/sorted_set_fetch_response.rbs +13 -0
- data/sig/momento/sorted_set_put_element_response.rbs +5 -0
- data/sig/momento/sorted_set_put_elements_response.rbs +5 -0
- metadata +101 -40
- data/lib/momento/cacheclient_pb.rb +0 -334
- data/lib/momento/cacheclient_services_pb.rb +0 -44
- data/lib/momento/controlclient_pb.rb +0 -73
- data/lib/momento/controlclient_services_pb.rb +0 -31
- data/lib/momento/create_cache_response.rb +0 -37
- data/lib/momento/create_cache_response_builder.rb +0 -27
- data/lib/momento/delete_cache_response.rb +0 -24
- data/lib/momento/delete_response.rb +0 -24
- data/lib/momento/get_response_builder.rb +0 -37
- data/lib/momento/list_caches_response.rb +0 -77
- data/lib/momento/list_caches_response_builder.rb +0 -25
- data/lib/momento/set_response.rb +0 -39
- data/lib/momento/set_response_builder.rb +0 -25
- data/lib/momento/simple_cache_client.rb +0 -336
- /data/lib/momento/{response_builder.rb → response/response_builder.rb} +0 -0
@@ -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
|
data/lib/momento/{delete_cache_response_builder.rb → response/control/delete_cache_response.rb}
RENAMED
@@ -1,7 +1,28 @@
|
|
1
|
-
|
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?(::
|
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?(::
|
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 '
|
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
|
26
|
+
# The gotten value, if any, as a UTF-8 string.
|
26
27
|
#
|
27
|
-
# @
|
28
|
-
|
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
|
57
|
-
value_bytes.dup.force_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
|
5
|
-
require_relative 'error/
|
6
|
-
require_relative '
|
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 '
|
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 '
|
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 '
|
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::
|
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,107 @@
|
|
1
|
+
require_relative '../error'
|
2
|
+
require_relative '../../generated/cacheclient_pb'
|
3
|
+
|
4
|
+
module Momento
|
5
|
+
# A response containing the elements retrieved from a sorted set.
|
6
|
+
class SortedSetFetchResponse < Response
|
7
|
+
# The sorted set exists and any matching elements were fetched.
|
8
|
+
# @return [Boolean]
|
9
|
+
def hit?
|
10
|
+
false
|
11
|
+
end
|
12
|
+
|
13
|
+
# The sorted set does not exist.
|
14
|
+
# @return [Boolean]
|
15
|
+
def miss?
|
16
|
+
false
|
17
|
+
end
|
18
|
+
|
19
|
+
# The fetched values as UTF-8 Strings and their scores.
|
20
|
+
# @return [(Array[{ value: String, score: Float }] | nil)] the UTF-8 elements and their scores
|
21
|
+
def value_string_elements
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
alias value value_string_elements
|
26
|
+
|
27
|
+
# The fetched values as ASCII_8BIT Strings and their scores.
|
28
|
+
# @return [(Array[{ value: String, score: Float }] | nil)] the ASCII_8BIT elements and their scores
|
29
|
+
def value_bytes_elements
|
30
|
+
nil
|
31
|
+
end
|
32
|
+
|
33
|
+
# @!method to_s
|
34
|
+
# Displays the response and the value, if any.
|
35
|
+
# A long value will be truncated.
|
36
|
+
# @return [String]
|
37
|
+
|
38
|
+
# @private
|
39
|
+
class Hit < SortedSetFetchResponse
|
40
|
+
# rubocop:disable Lint/MissingSuper
|
41
|
+
def initialize(grpc_response:)
|
42
|
+
@grpc_response = grpc_response
|
43
|
+
end
|
44
|
+
# rubocop:enable Lint/MissingSuper
|
45
|
+
|
46
|
+
def hit?
|
47
|
+
true
|
48
|
+
end
|
49
|
+
|
50
|
+
def value_string_elements
|
51
|
+
@grpc_response.elements.map do |element|
|
52
|
+
{ value: element.value.dup.force_encoding('UTF-8'), score: element.score }
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
alias value value_string_elements
|
57
|
+
|
58
|
+
def value_bytes_elements
|
59
|
+
@grpc_response.elements.map do |element|
|
60
|
+
{ value: element.value, score: element.score }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def to_s
|
65
|
+
"#{super}: #{display_string(value_string)}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# @private
|
70
|
+
class Miss < SortedSetFetchResponse
|
71
|
+
def miss?
|
72
|
+
true
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# @private
|
77
|
+
class Error < SortedSetFetchResponse
|
78
|
+
include Momento::Response::Error
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# @private
|
83
|
+
class SortedSetFetchResponseBuilder < ResponseBuilder
|
84
|
+
# Build a Momento::SortedSetFetchResponse from a block of code
|
85
|
+
# which returns a MomentoProtos::CacheClient::PB__SortedSetFetchResponse.
|
86
|
+
#
|
87
|
+
# @return [Momento::SortedSetFetchResponse]
|
88
|
+
# @raise [StandardError] when the exception is not recognized.
|
89
|
+
# @raise [TypeError] when the response is not recognized.
|
90
|
+
def from_block
|
91
|
+
response = yield
|
92
|
+
rescue *RESCUED_EXCEPTIONS => e
|
93
|
+
SortedSetFetchResponse::Error.new(exception: e, context: context)
|
94
|
+
else
|
95
|
+
raise TypeError unless response.is_a?(MomentoProtos::CacheClient::PB__SortedSetFetchResponse)
|
96
|
+
|
97
|
+
case response.sorted_set
|
98
|
+
when :found
|
99
|
+
SortedSetFetchResponse::Hit.new(grpc_response: response.found.values_with_scores)
|
100
|
+
when :missing
|
101
|
+
SortedSetFetchResponse::Miss.new
|
102
|
+
else
|
103
|
+
raise "Unknown sorted set fetch result: #{response.sorted_set}"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative '../error'
|
2
|
+
require_relative '../../generated/cacheclient_pb'
|
3
|
+
|
4
|
+
module Momento
|
5
|
+
# A response representing the result of a sorted set put element operation.
|
6
|
+
class SortedSetPutElementResponse < Response
|
7
|
+
# Was the element added to the sorted set?
|
8
|
+
# @return [Boolean]
|
9
|
+
def success?
|
10
|
+
false
|
11
|
+
end
|
12
|
+
|
13
|
+
# @private
|
14
|
+
class Success < SortedSetPutElementResponse
|
15
|
+
def success?
|
16
|
+
true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# @private
|
21
|
+
class Error < SortedSetPutElementResponse
|
22
|
+
include Momento::Response::Error
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# @private
|
27
|
+
class SortedSetPutElementResponseBuilder < ResponseBuilder
|
28
|
+
# Build a Momento::SortedSetPutElementResponse from a block of code
|
29
|
+
# which returns a MomentoProtos::CacheClient::PB__SortedSetPutElementResponse.
|
30
|
+
#
|
31
|
+
# @return [Momento::SortedSetPutElementResponse]
|
32
|
+
# @raise [StandardError] when the exception is not recognized.
|
33
|
+
# @raise [TypeError] when the response is not recognized.
|
34
|
+
def from_block
|
35
|
+
response = yield
|
36
|
+
rescue *RESCUED_EXCEPTIONS => e
|
37
|
+
SortedSetPutElementResponse::Error.new(exception: e, context: context)
|
38
|
+
else
|
39
|
+
raise TypeError unless response.is_a?(::MomentoProtos::CacheClient::PB__SortedSetPutResponse)
|
40
|
+
|
41
|
+
SortedSetPutElementResponse::Success.new
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative '../error'
|
2
|
+
require_relative '../../generated/cacheclient_pb'
|
3
|
+
|
4
|
+
module Momento
|
5
|
+
# A response representing the result of a sorted set put elements operation.
|
6
|
+
class SortedSetPutElementsResponse < Response
|
7
|
+
# Were the elements added to the sorted set?
|
8
|
+
# @return [Boolean]
|
9
|
+
def success?
|
10
|
+
false
|
11
|
+
end
|
12
|
+
|
13
|
+
# @private
|
14
|
+
class Success < SortedSetPutElementsResponse
|
15
|
+
def success?
|
16
|
+
true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# @private
|
21
|
+
class Error < SortedSetPutElementsResponse
|
22
|
+
include Momento::Response::Error
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# @private
|
27
|
+
class SortedSetPutElementsResponseBuilder < ResponseBuilder
|
28
|
+
# Build a Momento::SortedSetPutElementsResponse from a block of code
|
29
|
+
# which returns a MomentoProtos::CacheClient::PB__SortedSetPutElementsResponse.
|
30
|
+
#
|
31
|
+
# @return [Momento::SortedSetPutElementsResponse]
|
32
|
+
# @raise [StandardError] when the exception is not recognized.
|
33
|
+
# @raise [TypeError] when the response is not recognized.
|
34
|
+
def from_block
|
35
|
+
response = yield
|
36
|
+
rescue *RESCUED_EXCEPTIONS => e
|
37
|
+
SortedSetPutElementsResponse::Error.new(exception: e, context: context)
|
38
|
+
else
|
39
|
+
raise TypeError unless response.is_a?(::MomentoProtos::CacheClient::PB__SortedSetPutResponse)
|
40
|
+
|
41
|
+
SortedSetPutElementsResponse::Success.new
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|