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