Current section
Files
Jump to
Current section
Files
lib/middleware/normalize.ex
defmodule PINXS.Middleware.Normalize do
@moduledoc """
Transforms HTTP responses from Tesla in {:ok, response} / {:error, reason} tuples
The allows us to pattern match without having to also check every
request was a `2xx` response
"""
@behaviour Tesla.Middleware
alias Tesla.Env
def call(%Env{} = env, next, _options) do
with {:ok, response} <- Tesla.run(env, next),
{:ok, transformed} <- transform(response) do
{:ok, transformed}
end
end
defp transform(%Env{status: status} = env) when status in 200..299 do
{:ok, env}
end
defp transform(%Env{status: status} = env) when status in 400..599 do
{:error, env}
end
end