lib/middleware/error.ex

defmodule XRPL.Middleware.Error do
  @behaviour Tesla.Middleware

  @moduledoc """
  Makes requests that don't respond to HTTP Success codes to return as a error


  ### Example usage
  ```
  defmodule MyClient do
    use Tesla

    plug(XRPL.Middleware.Error)
  end
  ```
  """

  def call(env, next, _options) do
    env
    |> Tesla.run(next)
    |> case do
      {:ok, env} ->
        case env.status do
          s when s in [200, 201, 202, 203, 204] ->
            {:ok, env}

          _ ->
            {:error, env}
        end

      env ->
        env
    end
  end
end