@@ -22,6 +22,15 @@ class Config implements LoggerAwareInterface
22
22
const DEFAULT_CLIENT_TIMEOUT = 10 ;
23
23
const DEFAULT_SKIP_SSL_VERIFY = false ;
24
24
25
+ const FIELD_CLIENT_TIMEOUT = 'clientTimeout ' ;
26
+ const FIELD_ADDRESS = 'address ' ;
27
+ const FIELD_ADMIN_PATH = 'adminPath ' ;
28
+ const FIELD_API_KEY = 'apiKey ' ;
29
+ const FIELD_API_SECRET = 'apiSecret ' ;
30
+ const FIELD_NO_SSL = 'noSSL ' ;
31
+ const FIELD_HTTP_CLIENT = 'httpClient ' ;
32
+ const FIELD_SILENT = 'silent ' ;
33
+
25
34
/** @var int */
26
35
private $ clientTimeout = self ::DEFAULT_CLIENT_TIMEOUT ;
27
36
/** @var string */
@@ -32,6 +41,8 @@ class Config implements LoggerAwareInterface
32
41
private $ apiKey = '' ;
33
42
/** @var string */
34
43
private $ apiSecret = '' ;
44
+ /** @var bool */
45
+ private $ noSSL = false ;
35
46
36
47
/** @var \GuzzleHttp\ClientInterface */
37
48
private $ httpClient ;
@@ -52,12 +63,29 @@ public function __construct(array $config = [], ClientInterface $httpClient = nu
52
63
$ logger = new NullLogger ();
53
64
}
54
65
$ this ->setLogger ($ logger );
55
- foreach ($ config as $ k => $ v ) {
56
- $ k = sanitizeName ($ k , '_ ' , true );
57
- if ('httpClient ' === $ k ) {
58
- $ httpClient = $ v ;
66
+ foreach ($ config + self ::getConfigFromEnvironment () as $ rawK => $ v ) {
67
+ $ k = sanitizeName ($ rawK , '_ ' , true );
68
+ if (self ::FIELD_CLIENT_TIMEOUT === $ k ) {
69
+ $ this ->setClientTimeout ($ config [self ::FIELD_CLIENT_TIMEOUT ]);
70
+ } elseif (self ::FIELD_ADDRESS === $ k ) {
71
+ $ this ->setAddress ($ config [self ::FIELD_ADDRESS ]);
72
+ } elseif (self ::FIELD_ADMIN_PATH === $ k ) {
73
+ $ this ->setAdminPath ($ config [self ::FIELD_ADMIN_PATH ]);
74
+ } elseif (self ::FIELD_API_KEY === $ k ) {
75
+ $ this ->setApiKey ($ config [self ::FIELD_API_KEY ]);
76
+ } elseif (self ::FIELD_API_SECRET === $ k ) {
77
+ $ this ->setApiSecret ($ config [self ::FIELD_API_SECRET ]);
78
+ } elseif (self ::FIELD_NO_SSL === $ k ) {
79
+ $ this ->setNoSSL ($ config [self ::FIELD_NO_SSL ]);
80
+ } elseif (self ::FIELD_HTTP_CLIENT === $ k ) {
81
+ $ httpClient = $ config [self ::FIELD_HTTP_CLIENT ];
82
+ } elseif (self ::FIELD_SILENT === $ k ) {
83
+ $ this ->setSilent ($ config [self ::FIELD_SILENT ]);
59
84
} else {
60
- $ this ->{'set ' . ucfirst ($ k )}($ v );
85
+ throw new \OutOfBoundsException (sprintf (
86
+ 'Unknown configuration key "%s" seen. ' ,
87
+ $ rawK
88
+ ));
61
89
}
62
90
}
63
91
if (null === $ httpClient ) {
@@ -77,10 +105,11 @@ public static function getEnvironmentConfig(): array
77
105
$ ret = [];
78
106
foreach ([
79
107
ENV_RGW_API_HTTP_ADDR => tryGetEnvParam (ENV_RGW_API_HTTP_ADDR , '127.0.0.1 ' ),
108
+ ENV_RGW_API_NO_SSL => tryGetBoolEnvParam (ENV_RGW_API_NO_SSL , '0 ' ),
80
109
ENV_RGW_API_ADMIN_PATH => tryGetEnvParam (ENV_RGW_API_ADMIN_PATH , 'admin ' ),
81
110
ENV_RGW_API_KEY => tryGetEnvParam (ENV_RGW_API_KEY ),
82
111
ENV_RGW_API_SECRET => tryGetEnvParam (ENV_RGW_API_SECRET ),
83
- ENV_RGW_LOG_SILENT => tryGetEnvParam (ENV_RGW_LOG_SILENT , '0 ' ),
112
+ ENV_RGW_LOG_SILENT => tryGetBoolEnvParam (ENV_RGW_LOG_SILENT , '0 ' ),
84
113
] as $ k => $ v ) {
85
114
if ('' !== $ v ) {
86
115
$ ret [$ k ] = $ v ;
@@ -90,27 +119,37 @@ public static function getEnvironmentConfig(): array
90
119
}
91
120
92
121
/**
93
- * @param \GuzzleHttp\Client|null $client
94
- * @param null|\Psr\Log\LoggerInterface $logger
95
- * @return \MyENA\RGW\Config
122
+ * @return array
96
123
*/
97
- public static function defaultConfig (? GuzzleClient $ client = null , ? LoggerInterface $ logger = null ): Config
124
+ public static function getConfigFromEnvironment ( ): array
98
125
{
99
126
$ conf = [];
100
127
foreach (self ::getEnvironmentConfig () as $ k => $ v ) {
101
128
if (ENV_RGW_API_HTTP_ADDR === $ k ) {
102
- $ conf ['address ' ] = $ v ;
129
+ $ conf [self ::FIELD_ADDRESS ] = $ v ;
130
+ } elseif (ENV_RGW_API_NO_SSL === $ k ) {
131
+ $ conf [self ::FIELD_NO_SSL ] = $ v ;
103
132
} elseif (ENV_RGW_API_ADMIN_PATH === $ k ) {
104
- $ conf [' adminPath ' ] = $ v ;
133
+ $ conf [self :: FIELD_ADMIN_PATH ] = $ v ;
105
134
} elseif (ENV_RGW_API_KEY === $ k ) {
106
- $ conf [' apiKey ' ] = $ v ;
135
+ $ conf [self :: FIELD_API_KEY ] = $ v ;
107
136
} elseif (ENV_RGW_API_SECRET === $ k ) {
108
- $ conf [' apiSecret ' ] = $ v ;
137
+ $ conf [self :: FIELD_API_SECRET ] = $ v ;
109
138
} elseif (ENV_RGW_LOG_SILENT === $ k ) {
110
- $ conf [' silent ' ] = ( bool ) $ v ;
139
+ $ conf [self :: FIELD_SILENT ] = $ v ;
111
140
}
112
141
}
113
- return new static ($ conf , $ client , $ logger );
142
+ return $ conf ;
143
+ }
144
+
145
+ /**
146
+ * @param \GuzzleHttp\Client|null $client
147
+ * @param null|\Psr\Log\LoggerInterface $logger
148
+ * @return \MyENA\RGW\Config
149
+ */
150
+ public static function defaultConfig (?GuzzleClient $ client = null , ?LoggerInterface $ logger = null ): Config
151
+ {
152
+ return new static (self ::getConfigFromEnvironment (), $ client , $ logger );
114
153
}
115
154
116
155
/**
@@ -193,6 +232,22 @@ public function setApiSecret(string $apiSecret): void
193
232
$ this ->apiSecret = $ apiSecret ;
194
233
}
195
234
235
+ /**
236
+ * @return bool
237
+ */
238
+ public function isNoSSL (): bool
239
+ {
240
+ return $ this ->noSSL ;
241
+ }
242
+
243
+ /**
244
+ * @param bool $noSSL
245
+ */
246
+ public function setNoSSL (bool $ noSSL ): void
247
+ {
248
+ $ this ->noSSL = $ noSSL ;
249
+ }
250
+
196
251
/**
197
252
* @return \GuzzleHttp\ClientInterface
198
253
*/
0 commit comments