Current section

Files

Jump to
elixir_structure_manager priv templates adapters rest_consumer rest_consumer.eex
Raw

priv/templates/adapters/rest_consumer/rest_consumer.eex

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: urlchanged} = ConfigHolder.conf()
headers = []
<%= if metrics do %>headers = :otel_propagator_text_map.inject(headers)<% end %>
with {:ok, %Finch.Response{body: body}} <- Finch.build(:get, urlchanged, headers) |> 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"}]
<%= if metrics do %>headers = :otel_propagator_text_map.inject(headers)<% end %>
#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