@@ -5,13 +5,11 @@ use reqwest::Client;
55use tracing:: info;
66use url:: Url ;
77
8- use crate :: FPError ;
9-
10- #[ derive( Debug , Default , Clone ) ]
11- pub struct FPConfigBuilder {
12- pub remote_url : String ,
13- pub toggles_url : Option < String > ,
14- pub events_url : Option < String > ,
8+ #[ derive( Debug , Clone ) ]
9+ pub struct FPConfig {
10+ pub remote_url : Url ,
11+ pub toggles_url : Option < Url > ,
12+ pub events_url : Option < Url > ,
1513 pub server_sdk_key : String ,
1614 pub refresh_interval : Duration ,
1715 #[ cfg( feature = "use_tokio" ) ]
@@ -20,7 +18,7 @@ pub struct FPConfigBuilder {
2018}
2119
2220#[ derive( Debug , Clone ) ]
23- pub struct FPConfig {
21+ pub ( crate ) struct Config {
2422 pub toggles_url : Url ,
2523 pub events_url : Url ,
2624 pub server_sdk_key : String ,
@@ -34,8 +32,9 @@ impl Default for FPConfig {
3432 fn default ( ) -> Self {
3533 Self {
3634 server_sdk_key : "" . to_owned ( ) ,
37- toggles_url : Url :: parse ( "http://127.0.0.1:8080" ) . unwrap ( ) ,
38- events_url : Url :: parse ( "http://127.0.0.1:8080" ) . unwrap ( ) ,
35+ remote_url : Url :: parse ( "http://127.0.0.1:8080" ) . unwrap ( ) ,
36+ toggles_url : None ,
37+ events_url : None ,
3938 refresh_interval : Duration :: from_secs ( 5 ) ,
4039 start_wait : None ,
4140 #[ cfg( feature = "use_tokio" ) ]
@@ -44,78 +43,49 @@ impl Default for FPConfig {
4443 }
4544}
4645
47- impl FPConfigBuilder {
48- pub fn new (
49- remote_url : String ,
50- server_sdk_key : String ,
51- refresh_interval : Duration ,
52- ) -> FPConfigBuilder {
46+ impl Default for Config {
47+ fn default ( ) -> Self {
5348 Self {
54- remote_url,
55- server_sdk_key,
56- refresh_interval,
57- ..Default :: default ( )
49+ server_sdk_key : "" . to_owned ( ) ,
50+ toggles_url : Url :: parse ( "http://127.0.0.1:8080" ) . unwrap ( ) ,
51+ events_url : Url :: parse ( "http://127.0.0.1:8080" ) . unwrap ( ) ,
52+ refresh_interval : Duration :: from_secs ( 5 ) ,
53+ start_wait : None ,
54+ #[ cfg( feature = "use_tokio" ) ]
55+ http_client : None ,
5856 }
5957 }
58+ }
6059
61- pub fn toggles_url ( mut self , toggles_url : String ) -> FPConfigBuilder {
62- self . toggles_url = Some ( toggles_url) ;
63- self
64- }
65-
66- pub fn events_url ( mut self , events_url : String ) -> FPConfigBuilder {
67- self . events_url = Some ( events_url) ;
68- self
69- }
70-
71- pub fn start_wait ( mut self , start_wait : Duration ) -> FPConfigBuilder {
72- self . start_wait = Some ( start_wait) ;
73- self
74- }
75-
76- #[ cfg( feature = "use_tokio" ) ]
77- pub fn http_client ( mut self , http_client : Client ) -> FPConfigBuilder {
78- self . http_client = Some ( http_client) ;
79- self
80- }
81-
82- pub fn build ( & self ) -> Result < FPConfig , FPError > {
60+ impl FPConfig {
61+ pub ( crate ) fn build ( & self ) -> Config {
8362 info ! ( "build_config from {:?}" , self ) ;
84- let remote_url = {
85- if !self . remote_url . ends_with ( '/' ) {
86- self . remote_url . clone ( ) + "/"
87- } else {
88- self . remote_url . clone ( )
89- }
63+ let remote_url = self . remote_url . to_string ( ) ;
64+ let remote_url = match remote_url. ends_with ( '/' ) {
65+ true => remote_url,
66+ false => remote_url + "/" ,
9067 } ;
68+
9169 let toggles_url = match & self . toggles_url {
92- None => remote_url. clone ( ) + "api/server-sdk/toggles" ,
70+ None => {
71+ Url :: parse ( & ( remote_url. clone ( ) + "api/server-sdk/toggles" ) ) . expect ( "invalid url" )
72+ }
9373 Some ( url) => url. to_owned ( ) ,
9474 } ;
9575
96- let toggles_url: Url = match Url :: parse ( & toggles_url) {
97- Err ( e) => return Err ( FPError :: UrlError ( e. to_string ( ) ) ) ,
98- Ok ( url) => url,
99- } ;
100-
10176 let events_url = match & self . events_url {
102- None => remote_url + "api/events" ,
77+ None => Url :: parse ( & ( remote_url + "api/events" ) ) . expect ( "invalid url" ) ,
10378 Some ( url) => url. to_owned ( ) ,
10479 } ;
10580
106- let events_url: Url = match Url :: parse ( & events_url) {
107- Err ( e) => return Err ( FPError :: UrlError ( e. to_string ( ) ) ) ,
108- Ok ( url) => url,
109- } ;
110-
111- Ok ( FPConfig {
81+ Config {
11282 toggles_url,
11383 events_url,
11484 server_sdk_key : self . server_sdk_key . clone ( ) ,
11585 refresh_interval : self . refresh_interval ,
11686 start_wait : self . start_wait ,
11787 #[ cfg( feature = "use_tokio" ) ]
11888 http_client : self . http_client . clone ( ) ,
119- } )
89+ }
12090 }
12191}
0 commit comments