@@ -48,6 +48,7 @@ use open_feature::{
4848 EvaluationContext , EvaluationContextFieldValue , EvaluationError , EvaluationErrorCode ,
4949 EvaluationResult , StructValue , Value ,
5050} ;
51+ use reqwest:: Client ;
5152use serde_json;
5253use tracing:: { debug, error, instrument} ;
5354
@@ -60,6 +61,8 @@ pub struct RestResolver {
6061 endpoint : String ,
6162 /// Provider metadata
6263 metadata : ProviderMetadata ,
64+ /// HTTP client for making requests
65+ client : Client ,
6366}
6467
6568impl RestResolver {
@@ -81,6 +84,7 @@ impl RestResolver {
8184 Self {
8285 endpoint,
8386 metadata : ProviderMetadata :: new ( "flagd-rest-provider" ) ,
87+ client : Client :: new ( ) ,
8488 }
8589 }
8690}
@@ -108,12 +112,13 @@ impl FeatureProvider for RestResolver {
108112 evaluation_context : & EvaluationContext ,
109113 ) -> EvaluationResult < ResolutionDetails < bool > > {
110114 debug ! ( "Resolving boolean flag" ) ;
111- let client = reqwest :: Client :: new ( ) ;
115+
112116 let payload = serde_json:: json!( {
113117 "context" : context_to_json( evaluation_context)
114118 } ) ;
115119
116- let response = client
120+ let response = self
121+ . client
117122 . post ( format ! (
118123 "{}/ofrep/v1/evaluate/flags/{}" ,
119124 self . endpoint, flag_key
@@ -176,12 +181,13 @@ impl FeatureProvider for RestResolver {
176181 evaluation_context : & EvaluationContext ,
177182 ) -> EvaluationResult < ResolutionDetails < String > > {
178183 debug ! ( "Resolving string flag" ) ;
179- let client = reqwest :: Client :: new ( ) ;
184+
180185 let payload = serde_json:: json!( {
181186 "context" : context_to_json( evaluation_context)
182187 } ) ;
183188
184- let response = client
189+ let response = self
190+ . client
185191 . post ( format ! (
186192 "{}/ofrep/v1/evaluate/flags/{}" ,
187193 self . endpoint, flag_key
@@ -247,12 +253,13 @@ impl FeatureProvider for RestResolver {
247253 evaluation_context : & EvaluationContext ,
248254 ) -> EvaluationResult < ResolutionDetails < f64 > > {
249255 debug ! ( "Resolving float flag" ) ;
250- let client = reqwest :: Client :: new ( ) ;
256+
251257 let payload = serde_json:: json!( {
252258 "context" : context_to_json( evaluation_context)
253259 } ) ;
254260
255- let response = client
261+ let response = self
262+ . client
256263 . post ( format ! (
257264 "{}/ofrep/v1/evaluate/flags/{}" ,
258265 self . endpoint, flag_key
@@ -313,12 +320,13 @@ impl FeatureProvider for RestResolver {
313320 evaluation_context : & EvaluationContext ,
314321 ) -> EvaluationResult < ResolutionDetails < i64 > > {
315322 debug ! ( "Resolving integer flag" ) ;
316- let client = reqwest :: Client :: new ( ) ;
323+
317324 let payload = serde_json:: json!( {
318325 "context" : context_to_json( evaluation_context)
319326 } ) ;
320327
321- let response = client
328+ let response = self
329+ . client
322330 . post ( format ! (
323331 "{}/ofrep/v1/evaluate/flags/{}" ,
324332 self . endpoint, flag_key
@@ -382,12 +390,13 @@ impl FeatureProvider for RestResolver {
382390 evaluation_context : & EvaluationContext ,
383391 ) -> EvaluationResult < ResolutionDetails < StructValue > > {
384392 debug ! ( "Resolving struct flag" ) ;
385- let client = reqwest :: Client :: new ( ) ;
393+
386394 let payload = serde_json:: json!( {
387395 "context" : context_to_json( evaluation_context)
388396 } ) ;
389397
390- let response = client
398+ let response = self
399+ . client
391400 . post ( format ! (
392401 "{}/ofrep/v1/evaluate/flags/{}" ,
393402 self . endpoint, flag_key
0 commit comments