Current section

Files

Jump to
tz lib http http_response.ex
Raw

lib/http/http_response.ex

defmodule Tz.HTTP.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
{:ok, %{http_response | body: Enum.reverse(http_response.body), complete?: true}}
end
def parse([], http_response), do: {:ok, http_response}
end