@@ -5,9 +5,6 @@ module SDK
55    # TODO: Write documentation 
66    # 
77    class  Client 
8-       RESULT_TYPE  =  %i[ boolean  string  number  integer  float  object ] . freeze 
9-       SUFFIXES  =  %i[ value  details ] . freeze 
10- 
118      attr_reader  :metadata ,  :evaluation_context 
129
1310      attr_accessor  :hooks 
@@ -19,20 +16,63 @@ def initialize(provider:, domain: nil, evaluation_context: nil)
1916        @hooks  =  [ ] 
2017      end 
2118
22-       RESULT_TYPE . each  do  |result_type |
23-         SUFFIXES . each  do  |suffix |
24-           class_eval  <<-RUBY ,  __FILE__ ,  __LINE__  + 1 
25-             # def fetch_boolean_details(flag_key:, default_value:, evaluation_context: nil) 
26-             #   result = @provider.fetch_boolean_value(flag_key: flag_key, default_value: default_value, evaluation_context: evaluation_context) 
27-             # end 
28-             def fetch_#{ result_type } #{ suffix }  
29-               built_context = EvaluationContextBuilder.new.call(api_context: OpenFeature::SDK.evaluation_context, client_context: self.evaluation_context, invocation_context: evaluation_context) 
30-               resolution_details = @provider.fetch_#{ result_type }  
31-               evaluation_details = EvaluationDetails.new(flag_key:, resolution_details:) 
32-               #{ "evaluation_details.value"  if  suffix  == :value }  
33-             end 
34-           RUBY 
35-         end 
19+       def  fetch_boolean_details ( flag_key :,  default_value :,  evaluation_context : nil ) 
20+         fetch_details ( type : :boolean ,  flag_key :,  default_value :,  evaluation_context :) 
21+       end 
22+ 
23+       def  fetch_boolean_value ( flag_key :,  default_value :,  evaluation_context : nil ) 
24+         fetch_details ( type : :boolean ,  flag_key :,  default_value :,  evaluation_context :) . value 
25+       end 
26+ 
27+       def  fetch_string_details ( flag_key :,  default_value :,  evaluation_context : nil ) 
28+         fetch_details ( type : :string ,  flag_key :,  default_value :,  evaluation_context :) 
29+       end 
30+ 
31+       def  fetch_string_value ( flag_key :,  default_value :,  evaluation_context : nil ) 
32+         fetch_details ( type : :string ,  flag_key :,  default_value :,  evaluation_context :) . value 
33+       end 
34+ 
35+       def  fetch_number_details ( flag_key :,  default_value :,  evaluation_context : nil ) 
36+         fetch_details ( type : :number ,  flag_key :,  default_value :,  evaluation_context :) 
37+       end 
38+ 
39+       def  fetch_number_value ( flag_key :,  default_value :,  evaluation_context : nil ) 
40+         fetch_details ( type : :number ,  flag_key :,  default_value :,  evaluation_context :) . value 
41+       end 
42+ 
43+       def  fetch_integer_details ( flag_key :,  default_value :,  evaluation_context : nil ) 
44+         fetch_details ( type : :integer ,  flag_key :,  default_value :,  evaluation_context :) 
45+       end 
46+ 
47+       def  fetch_integer_value ( flag_key :,  default_value :,  evaluation_context : nil ) 
48+         fetch_details ( type : :integer ,  flag_key :,  default_value :,  evaluation_context :) . value 
49+       end 
50+ 
51+       def  fetch_float_details ( flag_key :,  default_value :,  evaluation_context : nil ) 
52+         fetch_details ( type : :float ,  flag_key :,  default_value :,  evaluation_context :) 
53+       end 
54+ 
55+       def  fetch_float_value ( flag_key :,  default_value :,  evaluation_context : nil ) 
56+         fetch_details ( type : :float ,  flag_key :,  default_value :,  evaluation_context :) . value 
57+       end 
58+ 
59+       def  fetch_object_details ( flag_key :,  default_value :,  evaluation_context : nil ) 
60+         fetch_details ( type : :object ,  flag_key :,  default_value :,  evaluation_context :) 
61+       end 
62+ 
63+       def  fetch_object_value ( flag_key :,  default_value :,  evaluation_context : nil ) 
64+         fetch_details ( type : :object ,  flag_key :,  default_value :,  evaluation_context :) . value 
65+       end 
66+ 
67+       private 
68+ 
69+       def  fetch_details ( type :,  flag_key :,  default_value :,  evaluation_context : nil ) 
70+         built_context  =  EvaluationContextBuilder . new . call ( api_context : OpenFeature ::SDK . evaluation_context ,  client_context : self . evaluation_context ,  invocation_context : evaluation_context ) 
71+ 
72+         EvaluationDetails . new ( 
73+           flag_key :, 
74+           resolution_details : @provider . send ( :"fetch_#{ type }  ,  flag_key :,  default_value :,  evaluation_context : built_context ) 
75+         ) 
3676      end 
3777    end 
3878  end 
0 commit comments