11use std:: str;
22
33use config:: { Config , ConfigError , Environment , File , FileFormat } ;
4- use serde:: Deserialize ;
4+ use serde:: { Deserialize , Serialize } ;
55
6- #[ derive( Debug , Deserialize ) ]
7- #[ allow( unused) ]
6+ pub const ENVIRONMENT_VARIABLE_PREFIX : & str = "TRUSTED_SERVER" ;
7+ pub const ENVIRONMENT_VARIABLE_SEPARATOR : & str = "__" ;
8+
9+ #[ derive( Debug , Default , Deserialize , Serialize ) ]
810pub struct AdServer {
911 pub ad_partner_url : String ,
1012 pub sync_url : String ,
1113}
1214
13- #[ derive( Debug , Deserialize ) ]
14- #[ allow( unused) ]
15+ #[ derive( Debug , Default , Deserialize , Serialize ) ]
1516pub struct Publisher {
1617 pub domain : String ,
1718 pub cookie_domain : String ,
1819 pub origin_url : String ,
1920}
2021
21- #[ derive( Debug , Deserialize ) ]
22- #[ allow( unused) ]
22+ #[ derive( Debug , Default , Deserialize , Serialize ) ]
2323pub struct Prebid {
2424 pub server_url : String ,
2525}
2626
27- #[ derive( Debug , Deserialize ) ]
28- #[ allow( unused) ]
27+ #[ derive( Debug , Default , Deserialize , Serialize ) ]
2928pub struct Synthetic {
3029 pub counter_store : String ,
3130 pub opid_store : String ,
3231 pub secret_key : String ,
3332 pub template : String ,
3433}
3534
36- #[ derive( Debug , Deserialize ) ]
37- #[ allow( unused) ]
35+ #[ derive( Debug , Default , Deserialize , Serialize ) ]
3836pub struct Settings {
3937 pub ad_server : AdServer ,
4038 pub publisher : Publisher ,
4139 pub prebid : Prebid ,
4240 pub synthetic : Synthetic ,
4341}
4442
43+ #[ allow( unused) ]
4544impl Settings {
4645 pub fn new ( ) -> Result < Self , ConfigError > {
4746 let toml_bytes = include_bytes ! ( "../../../trusted-server.toml" ) ;
@@ -52,8 +51,8 @@ impl Settings {
5251
5352 pub fn from_toml ( toml_str : & str ) -> Result < Self , ConfigError > {
5453 let environment = Environment :: default ( )
55- . prefix ( "TRUSTED_SERVER" )
56- . separator ( "__" ) ;
54+ . prefix ( ENVIRONMENT_VARIABLE_PREFIX )
55+ . separator ( ENVIRONMENT_VARIABLE_SEPARATOR ) ;
5756
5857 let toml = File :: from_str ( toml_str, FileFormat :: Toml ) ;
5958 let config = Config :: builder ( )
@@ -181,7 +180,12 @@ mod tests {
181180 let toml_str = re. replace ( & toml_str, "" ) ;
182181
183182 temp_env:: with_var (
184- "TRUSTED_SERVER__AD_SERVER__AD_PARTNER_URL" ,
183+ format ! (
184+ "{}{}AD_SERVER{}AD_PARTNER_URL" ,
185+ ENVIRONMENT_VARIABLE_PREFIX ,
186+ ENVIRONMENT_VARIABLE_SEPARATOR ,
187+ ENVIRONMENT_VARIABLE_SEPARATOR
188+ ) ,
185189 Some ( "https://change-ad.com/serve" ) ,
186190 || {
187191 let settings = Settings :: from_toml ( & toml_str) ;
@@ -200,7 +204,12 @@ mod tests {
200204 let toml_str = crate_test_settings_str ( ) ;
201205
202206 temp_env:: with_var (
203- "TRUSTED_SERVER__AD_SERVER__AD_PARTNER_URL" ,
207+ format ! (
208+ "{}{}AD_SERVER{}AD_PARTNER_URL" ,
209+ ENVIRONMENT_VARIABLE_PREFIX ,
210+ ENVIRONMENT_VARIABLE_SEPARATOR ,
211+ ENVIRONMENT_VARIABLE_SEPARATOR
212+ ) ,
204213 Some ( "https://change-ad.com/serve" ) ,
205214 || {
206215 let settings = Settings :: from_toml ( & toml_str) ;
0 commit comments