Current section

Files

Jump to
elixir_structure_manager priv templates adapters rest_consumer rest_consumer.ex
Raw

priv/templates/adapters/rest_consumer/rest_consumer.ex

defmodule {app}.Infrastructure.Adapters.RestConsumer.{name}.{name}Adapter do
alias {app}.Config.ConfigHolder
#alias {app}.Domain.Model.{name}
#alias {app}.Infrastructure.Adapters.RestConsumer.{name}.Data.{name}Request
## TODO: Update behaviour
# @behaviour {app}.Domain.Behaviours.{name}Behaviour
def get() do
%{{name_snake}_url: url} = ConfigHolder.conf()
with {:ok, %Finch.Response{body: body}} <- Finch.build(:get, url) |> Finch.request(HttpFinch),
{:ok, response} <- Poison.decode(body) do
{:ok, response}
end
end
def post(body) do
%{{name_snake}_url: url} = ConfigHolder.conf()
headers = [{"Content-Type", "application/json"}]
#body = struct({name}Request, body)
with {:ok, request} <- Poison.encode(body),
{:ok, %Finch.Response{body: body, status: _}}
<- Finch.build(:post, url, headers, request) |> Finch.request(HttpFinch) do
#Poison.decode(body, as: %{name}{})
Poison.decode(body)
end
end
end