Merge pull request #4 from abhay/allow-ssl

Allow SSL in database url
This commit is contained in:
Marc Nijdam 2020-04-20 07:38:59 -07:00 committed by GitHub
commit 7047458a06
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -176,7 +176,7 @@ connection_opts(_Args, {url, DatabaseUrl}) ->
case http_uri:parse(DatabaseUrl, ParseOpts) of case http_uri:parse(DatabaseUrl, ParseOpts) of
{error, Error} -> {error, Error} ->
{error, Error}; {error, Error};
{ok, {_, UserPass, Host, Port, Database, _}} -> {ok, {_, UserPass, Host, Port, Database, Query}} ->
{User, Pass} = case string:split(UserPass, ":") of {User, Pass} = case string:split(UserPass, ":") of
[[]] -> {"postgres", ""}; [[]] -> {"postgres", ""};
[U] -> {U, ""}; [U] -> {U, ""};
@ -184,12 +184,25 @@ connection_opts(_Args, {url, DatabaseUrl}) ->
[U, P] -> {U, P} [U, P] -> {U, P}
end, end,
{ok, #{ ConnectionOpts = #{
port => Port, port => Port,
username => User, username => User,
password => Pass, password => Pass,
host => Host, host => Host,
database => string:slice(Database, 1)}} database => string:slice(Database, 1)},
case Query of
[] -> {ok, ConnectionOpts};
"?" ++ QueryString ->
case uri_string:dissect_query(QueryString) of
[] -> {ok, ConnectionOpts};
QueryList ->
case proplists:get_value("ssl", QueryList) of
"true" -> {ok, maps:put(ssl, true, ConnectionOpts)};
_ -> {ok, ConnectionOpts}
end
end
end
end. end.
-spec open_connection(list() | map()) -> {ok, epgsql:connection()} | {error, term()}. -spec open_connection(list() | map()) -> {ok, epgsql:connection()} | {error, term()}.