aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Schaefermeyer <michael.schaefermeyer@gmail.com>2016-08-01 13:21:31 +0200
committerMichael Schaefermeyer <michael.schaefermeyer@gmail.com>2016-08-01 13:21:31 +0200
commit5b2a832a42eece9cd13c43899298551ee4906878 (patch)
tree42db1bf4d2c1032776766b7f57794f385951850c
parent31dec1c42b4ae90da2b738ba480308d620b4b9b2 (diff)
downloadboltex-5b2a832a42eece9cd13c43899298551ee4906878.tar.gz
boltex-5b2a832a42eece9cd13c43899298551ee4906878.tar.xz
Add auth
-rw-r--r--lib/boltex.ex6
-rw-r--r--lib/boltex/bolt.ex23
2 files changed, 25 insertions, 4 deletions
diff --git a/lib/boltex.ex b/lib/boltex.ex
index 9de7d3b..af1a770 100644
--- a/lib/boltex.ex
+++ b/lib/boltex.ex
@@ -1,13 +1,13 @@
defmodule Boltex do
alias Boltex.Bolt
- def test(host, port, query) do
+ def test(host, port, query, params \\ %{}) do
{:ok, p} = :gen_tcp.connect host, port, [active: false, mode: :binary, packet: :raw]
:ok = Bolt.handshake :gen_tcp, p
- :ok = Bolt.init :gen_tcp, p
+ :ok = Bolt.init :gen_tcp, p, params
- Enum.map Bolt.run_statement(:gen_tcp, p, query), &IO.inspect/1
+ IO.inspect Bolt.run_statement(:gen_tcp, p, query, params)
end
end
diff --git a/lib/boltex/bolt.ex b/lib/boltex/bolt.ex
index 2e7f6b5..8bbf3e7 100644
--- a/lib/boltex/bolt.ex
+++ b/lib/boltex/bolt.ex
@@ -48,8 +48,20 @@ defmodule Boltex.Bolt do
@doc """
Initialises the connection.
+
+ Expects a transport module (i.e. `gen_tcp`) and a `Port`. Accepts
+ authorisation params in the form of {username, password}.
+
+ ## Examples
+
+ iex> Boltex.Bolt.init :gen_tcp, port
+ :ok
+
+ iex> Boltex.Bolt.init :gen_tcp, port, {"username", "password"}
+ :ok
"""
- def init(transport, port, params \\ %{}) do
+ def init(transport, port, auth \\ nil) do
+ params = auth_params auth
send_messages transport, port, [{[@user_agent, params], @sig_init}]
case receive_data(transport, port) do
@@ -62,6 +74,15 @@ defmodule Boltex.Bolt do
end
end
+ defp auth_params(nil), do: %{}
+ defp auth_params({username, password}) do
+ %{
+ scheme: "basic",
+ principal: username,
+ credentials: password
+ }
+ end
+
@doc """
Sends a list of messages using the Bolt protocol and PackStream encoding.