Current section

Files

Jump to
tz lib http mint http_response.ex
Raw

lib/http/mint/http_response.ex

if Code.ensure_loaded?(Mint.HTTP) do
defmodule Tz.HTTP.Mint.HTTPResponse do
@moduledoc false
defstruct status_code: nil, headers: nil, body: [], complete?: false
def parse([{:status, _, status_code} | mint_messages], %__MODULE__{} = http_response) do
parse(mint_messages, %{http_response | status_code: status_code})
end
def parse([{:headers, _, headers} | mint_messages], %__MODULE__{} = http_response) do
parse(mint_messages, %{http_response | headers: headers})
end
def parse([{:data, _, data} | mint_messages], %__MODULE__{} = http_response) do
parse(mint_messages, %{http_response | body: [data | http_response.body]})
end
def parse([{:done, _}], %__MODULE__{} = http_response) do
body =
http_response.body
|> Enum.reverse()
|> Enum.join()
{:ok, %{http_response | body: body, complete?: true}}
end
def parse([], http_response), do: {:ok, http_response}
end
end