Class: OpenFeature::Flagd::Provider::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/openfeature/flagd/provider/client.rb

Overview

Client represents a wrapper for the GRPC stub that allows for resolution of boolean, string, number, and object values. The implementation follows the details specified in openfeature.dev/docs/specification/sections/providers

The Client provides the following methods and attributes:

  • metadata - Returns the associated provider metadata with the name

  • fetch_boolean_value(flag_key:, default_value:, evaluation_context: nil) manner; client.fetch_boolean(flag_key: 'boolean-flag', default_value: false)

  • fetch_integer_value(flag_key:, default_value:, evaluation_context: nil) manner; client.fetch_integer_value(flag_key: 'integer-flag', default_value: 2)

  • fetch_float_value(flag_key:, default_value:, evaluation_context: nil) manner; client.fetch_float_value(flag_key: 'float-flag', default_value: 2.0)

  • fetch_string_value(flag_key:, default_value:, evaluation_context: nil) manner; client.fetch_string_value(flag_key: 'string-flag', default_value: 'some-default-value')

  • fetch_object_value(flag_key:, default_value:, evaluation_context: nil) manner; client.fetch_object_value(flag_key: 'flag', default_value: { default_value: 'value'})

Constant Summary collapse

PROVIDER_NAME =
"flagd Provider"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(configuration: nil) ⇒ Client

Returns a new instance of Client.



39
40
41
42
# File 'lib/openfeature/flagd/provider/client.rb', line 39

def initialize(configuration: nil)
  @metadata = OpenFeature::SDK::Provider::ProviderMetadata.new(name: PROVIDER_NAME)
  @grpc_client = grpc_client(configuration)
end

Instance Attribute Details

#metadataObject (readonly)

Returns the value of attribute metadata.



37
38
39
# File 'lib/openfeature/flagd/provider/client.rb', line 37

def 
  @metadata
end

Instance Method Details

#fetch_boolean_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



44
45
46
47
# File 'lib/openfeature/flagd/provider/client.rb', line 44

def fetch_boolean_value(flag_key:, default_value:, evaluation_context: nil)
  request = Grpc::Evaluation::ResolveBooleanRequest.new(flag_key: flag_key, context: prepare_evaluation_context(evaluation_context))
  process_request(default_value) { @grpc_client.resolve_boolean(request) }
end

#fetch_float_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



63
64
65
66
# File 'lib/openfeature/flagd/provider/client.rb', line 63

def fetch_float_value(flag_key:, default_value:, evaluation_context: nil)
  request = Grpc::Evaluation::ResolveFloatRequest.new(flag_key: flag_key, context: prepare_evaluation_context(evaluation_context))
  process_request(default_value) { @grpc_client.resolve_float(request) }
end

#fetch_integer_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



58
59
60
61
# File 'lib/openfeature/flagd/provider/client.rb', line 58

def fetch_integer_value(flag_key:, default_value:, evaluation_context: nil)
  request = Grpc::Evaluation::ResolveIntRequest.new(flag_key: flag_key, context: prepare_evaluation_context(evaluation_context))
  process_request(default_value) { @grpc_client.resolve_int(request) }
end

#fetch_number_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



49
50
51
52
53
54
55
56
# File 'lib/openfeature/flagd/provider/client.rb', line 49

def fetch_number_value(flag_key:, default_value:, evaluation_context: nil)
  case default_value
  when Integer
    fetch_integer_value(flag_key: flag_key, default_value: default_value, evaluation_context: evaluation_context)
  when Float
    fetch_float_value(flag_key: flag_key, default_value: default_value, evaluation_context: evaluation_context)
  end
end

#fetch_object_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



73
74
75
76
# File 'lib/openfeature/flagd/provider/client.rb', line 73

def fetch_object_value(flag_key:, default_value:, evaluation_context: nil)
  request = Grpc::Evaluation::ResolveObjectRequest.new(flag_key: flag_key, context: prepare_evaluation_context(evaluation_context))
  process_request(default_value) { @grpc_client.resolve_object(request) }
end

#fetch_string_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



68
69
70
71
# File 'lib/openfeature/flagd/provider/client.rb', line 68

def fetch_string_value(flag_key:, default_value:, evaluation_context: nil)
  request = Grpc::Evaluation::ResolveStringRequest.new(flag_key: flag_key, context: prepare_evaluation_context(evaluation_context))
  process_request(default_value) { @grpc_client.resolve_string(request) }
end