lib/cape/generico/api.ex

defmodule Cape.Generico do
  @moduledoc ~S'''
  Utilità generiche Api rest
  '''

  def headers do
    [
      {"Accept", "application/json"},
      {"Content-Type", "application/x-www-form-urlencoded"},
      {"Cache-Control", "no-cache, no-store, must-revalidate"}
    ]
  end

  def options do
    [recv_timeout: :infinity]
  end

  def post(url, payload) do
    result =
      case HTTPoison.post(url, payload, headers(), options()) do
        {:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
          {:ok, decodificato} =
            body
            |> Poison.decode()

          decodificato

        {:ok, %HTTPoison.Response{status_code: 404}} ->
          IO.puts("Not found :(")
          {:error, codice: "404"}

        {:error, %HTTPoison.Error{reason: reason}} ->
          IO.inspect(reason)
          {:error, codice: reason}
      end

    result
  end

  def get(url) do
    result =
      case HTTPoison.get(url, headers(), options()) do
        {:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
          Poison.decode(body)

        {:ok, %HTTPoison.Response{status_code: 404}} ->
          IO.puts("Not found :(")
          {:error, codice: "404"}

        {:error, %HTTPoison.Error{reason: reason}} ->
          IO.inspect(reason)
          {:error, codice: reason}
      end

    result
  end
end