File Coverage

blib/lib/OpenFeature/Client.pm
Criterion Covered Total %
statement 39 112 34.8
branch 1 2 50.0
condition n/a
subroutine 5 14 35.7
pod 0 13 0.0
total 45 141 31.9


line stmt bran cond sub pod time code
1 1     1   9 use v5.36;
  1         3  
2             package OpenFeature::Client;
3              
4 1     1 0 1 sub new($class, $provider_registry, $domain = undef, $hooks = []) {
  1         1  
  1         2  
  1         1  
  1         2  
  1         1  
5 1         1 my $self = {};
6 1         1 my $provider = {};
7 1 50       3 if (defined $domain) {
8 1         2 $provider = $provider_registry->get_provider($domain);
9 1         3 $self->{'domain'} = $domain;
10             } else {
11 0         0 $provider = $provider_registry->get_default_provider();
12             }
13 1         2 $self->{'provider'} = $provider;
14 1         2 $self->{'hooks'} = $hooks;
15 1         2 bless $self, $class
16             }
17              
18 0     0 0 0 sub get_metadata($self) {
  0         0  
  0         0  
19 0         0 { domain => $self->{'domain'} }
20             }
21              
22 1     1 0 2 sub add_hooks($self, $new_hooks) {
  1         1  
  1         1  
  1         2  
23 1         9 my $original_hooks = $self->{'hooks'};
24 1         3 $self->{'hooks'} = [@$original_hooks, @$new_hooks]
25             }
26              
27             sub get_boolean_value(
28 1         1 $self,
29 1         1 $flag_key,
30 1         2 $default_value,
31 1         1 $evaluation_context = undef,
32             $flag_evaluation_options = undef
33 1     1 0 4 ) {
  1         1  
  1         1  
34             $self->get_boolean_details(
35             $flag_key,
36             $default_value,
37             $evaluation_context,
38             $flag_evaluation_options
39 1         3 )->{'value'}
40             }
41              
42             sub get_boolean_details(
43 1         1 $self,
44 1         2 $flag_key,
45 1         1 $default_value,
46 1         1 $evaluation_context,
47             $flag_evaluation_options
48 1     1 0 1 ) {
  1         1  
  1         1  
49             # pre-hooks
50 1         6 my $flag_details = $self->{'provider'}->resolve_boolean_details(
51             $flag_key, $default_value, $evaluation_context,
52             );
53             # post hooks
54            
55 1         4 $flag_details
56             }
57              
58             sub get_string_value(
59 0           $self,
60 0           $flag_key,
61 0           $default_value,
62 0           $evaluation_context = undef,
63             $flag_evaluation_options = undef
64 0     0 0   ) {
  0            
  0            
65             $self->get_string_details(
66             $flag_key,
67             $default_value,
68             $evaluation_context,
69             $flag_evaluation_options
70 0           )->{'value'}
71             }
72              
73             sub get_string_details(
74 0           $self,
75 0           $flag_key,
76 0           $default_value,
77 0           $evaluation_context,
78             $flag_evaluation_options
79 0     0 0   ) {
  0            
  0            
80             # pre-hooks
81 0           my $flag_details = $self->{'provider'}->resolve_string_details(
82             $flag_key, $default_value, $evaluation_context,
83             );
84             # post hooks
85            
86 0           $flag_details
87             }
88              
89             sub get_integer_value(
90 0           $self,
91 0           $flag_key,
92 0           $default_value,
93 0           $evaluation_context = undef,
94             $flag_evaluation_options = undef
95 0     0 0   ) {
  0            
  0            
96             $self->get_integer_details(
97             $flag_key,
98             $default_value,
99             $evaluation_context,
100             $flag_evaluation_options
101 0           )->{'value'}
102             }
103              
104             sub get_integer_details(
105 0           $self,
106 0           $flag_key,
107 0           $default_value,
108 0           $evaluation_context,
109             $flag_evaluation_options
110 0     0 0   ) {
  0            
  0            
111             # pre-hooks
112 0           my $flag_details = $self->{'provider'}->resolve_integer_details(
113             $flag_key, $default_value, $evaluation_context,
114             );
115             # post hooks
116            
117 0           $flag_details
118             }
119              
120             sub get_float_value(
121 0           $self,
122 0           $flag_key,
123 0           $default_value,
124 0           $evaluation_context = undef,
125             $flag_evaluation_options = undef
126 0     0 0   ) {
  0            
  0            
127             $self->get_float_details(
128             $flag_key,
129             $default_value,
130             $evaluation_context,
131             $flag_evaluation_options
132 0           )->{'value'}
133             }
134              
135             sub get_float_details(
136 0           $self,
137 0           $flag_key,
138 0           $default_value,
139 0           $evaluation_context,
140             $flag_evaluation_options
141 0     0 0   ) {
  0            
  0            
142             # pre-hooks
143 0           my $flag_details = $self->{'provider'}->resolve_float_details(
144             $flag_key, $default_value, $evaluation_context,
145             );
146             # post hooks
147            
148 0           $flag_details
149             }
150              
151             sub get_object_value(
152 0           $self,
153 0           $flag_key,
154 0           $default_value,
155 0           $evaluation_context = undef,
156             $flag_evaluation_options = undef
157 0     0 0   ) {
  0            
  0            
158             $self->get_object_details(
159             $flag_key,
160             $default_value,
161             $evaluation_context,
162             $flag_evaluation_options
163 0           )->{'value'}
164             }
165              
166             sub get_object_details(
167 0           $self,
168 0           $flag_key,
169 0           $default_value,
170 0           $evaluation_context,
171             $flag_evaluation_options
172 0     0 0   ) {
  0            
  0            
173             # pre-hooks
174 0           my $flag_details = $self->{'provider'}->resolve_object_details(
175             $flag_key, $default_value, $evaluation_context,
176             );
177             # post hooks
178            
179 0           $flag_details
180             }
181              
182             1;