@@ -234,6 +234,7 @@ version(USE_PGSQL) {
234
234
PGconn * conn;
235
235
bool closed;
236
236
bool autocommit = true ;
237
+ bool useSsl = true ;
237
238
Mutex mutex;
238
239
239
240
@@ -284,6 +285,19 @@ version(USE_PGSQL) {
284
285
urlParams = url[qmIndex + 1 .. $];
285
286
url = url[0 .. qmIndex];
286
287
// TODO: parse params
288
+ string [] list = urlParams.split(" ," );
289
+ foreach (item; list) {
290
+ string [] keyValue = item.split(" =" );
291
+ if (keyValue.length == 2 ) {
292
+ if (keyValue[0 ] == " user" )
293
+ username = keyValue[1 ];
294
+ else if (keyValue[0 ] == " password" )
295
+ password = keyValue[1 ];
296
+ else if (keyValue[0 ] == " ssl" ) {
297
+ useSsl = (keyValue[1 ] == " true" );
298
+ }
299
+ }
300
+ }
287
301
}
288
302
string dbName = " " ;
289
303
ptrdiff_t firstSlashes = std.string.indexOf (url, " //" );
@@ -305,10 +319,16 @@ version(USE_PGSQL) {
305
319
if (port < 1 || port > 65535 )
306
320
port = 5432 ;
307
321
}
308
- username = params[" user" ];
309
- password = params[" password" ];
322
+ if (" user" in params)
323
+ username = params[" user" ];
324
+ if (" password" in params)
325
+ password = params[" password" ];
326
+ if (" ssl" in params)
327
+ useSsl = (params[" ssl" ] == " true" );
328
+
310
329
311
330
// writeln("host " ~ hostname ~ " : " ~ to!string(port) ~ " db=" ~ dbName ~ " user=" ~ username ~ " pass=" ~ password);
331
+ // TODO: support SSL param
312
332
313
333
const char ** keywords = [std.string.toStringz (" host" ), std.string.toStringz (" port" ), std.string.toStringz (" dbname" ), std.string.toStringz (" user" ), std.string.toStringz (" password" ), null ].ptr;
314
334
const char ** values = [std.string.toStringz (hostname), std.string.toStringz (to! string (port)), std.string.toStringz (dbName), std.string.toStringz (username), std.string.toStringz (password), null ].ptr;
0 commit comments