Skip to content

Commit

Permalink
Update hooks to properly use HTTPoison
Browse files Browse the repository at this point in the history
Allow `Hook` to properly use `headers` and `options` in requests
using `HTTPoison`.
  • Loading branch information
camirmas committed Nov 20, 2016
1 parent 83fd876 commit 29a86c1
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 21 deletions.
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,14 @@ The default struct, `%Grapple.Hook{}`, has the following fields:
- `life`
- `ref`
- `method`
- `headers`
- `body`
- `headers`
- `options`
- `query`
- `timeout`

Note that `url` is **required**.
Note that `url` is **required**. Additionally, the fields `body`, `headers`, and
`options` all correspond to those used in `HTTPoison` requests. See [HTTPoison](https://github.com/edgurgel/httpoiso://github.com/edgurgel/httpoison)
for more info.

**Topics**

Expand Down
20 changes: 10 additions & 10 deletions lib/grapple/hook.ex
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ defmodule Grapple.Hook do
:life,
:ref,
method: "GET",
headers: [],
body: %{},
headers: [],
options: [],
query: %{},
timeout: 5000,
]

# API
Expand Down Expand Up @@ -75,20 +75,20 @@ defmodule Grapple.Hook do

# Helpers

defp notify(webhook = %Grapple.Hook{method: "GET"}, _body) do
@http.get(webhook.url, webhook.headers)
defp notify(hook = %Grapple.Hook{method: "GET"}, _body) do
@http.get(hook.url, hook.headers, hook.options)
end

defp notify(webhook = %Grapple.Hook{method: "POST"}, body) do
@http.post(webhook.url, webhook.headers, body)
defp notify(hook = %Grapple.Hook{method: "POST"}, body) do
@http.post(hook.url, body, hook.headers, hook.options)
end

defp notify(webhook = %Grapple.Hook{method: "PUT"}, body) do
@http.put(webhook.url, webhook.headers, body)
defp notify(hook = %Grapple.Hook{method: "PUT"}, body) do
@http.put(hook.url, body, hook.headers, hook.options)
end

defp notify(webhook = %Grapple.Hook{method: "DELETE"}, _body) do
@http.delete(webhook.url, webhook.headers)
defp notify(hook = %Grapple.Hook{method: "DELETE"}, _body) do
@http.delete(hook.url, hook.headers, hook.options)
end

defp send_to_owner(%{owner: owner}, response) when is_pid(owner) do
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ defmodule Grapple.Mixfile do

def project do
[app: :grapple,
version: "1.0.0",
version: "1.0.1",
elixir: "~> 1.3",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
Expand Down
2 changes: 1 addition & 1 deletion test/hook_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ defmodule HookTest do
defhook pokemon(name), do: name
end

res = HookableArgs.pokemon("dragonite")
HookableArgs.pokemon("dragonite")

assert_receive {:hook_response, ^pid, response}
assert response == {:ok, %{body: %{}, status_code: 200}}
Expand Down
12 changes: 6 additions & 6 deletions test/http_client.exs
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
defmodule Grapple.Test.HttpClient do

def get("NOT_FOUND", _headers) do
def get("NOT_FOUND", _headers, _options) do
{:ok, %{status_code: 404}}
end
def get("ERROR", _headers) do
def get("ERROR", _headers, _options) do
{:error, %{reason: ""}}
end
def get(_url, _headers) do
def get(_url, _headers, _options) do
{:ok, %{status_code: 200, body: %{}}}
end

def post(_url, _headers, body) do
def post(_url, body, _headers, _options) do
{:ok, %{status_code: 200, body: body}}
end

def put(_url, _headers, body) do
def put(_url, body, _headers, _options) do
{:ok, %{status_code: 200, body: body}}
end

def delete(_url, _headers) do
def delete(_url, _headers, _options) do
{:ok, %{status_code: 200, body: %{}}}
end

Expand Down

0 comments on commit 29a86c1

Please sign in to comment.