Current section
Files
Jump to
Current section
Files
lib/unko3.ex
defmodule Response do
defstruct response: [], records: []
def wrap(response) do
%__MODULE__{response: response}
end
def records(st) do
%{st | records: st.response}
end
defimpl Enumerable, for: Response do
def count(_page), do: {:error, __MODULE__}
def member?(_page, _value), do: {:error, __MODULE__}
def reduce(%Response{records: records}, acc, fun) do
Enumerable.reduce(records, acc, fun)
end
end
defimpl Collectable, for: Response do
def into(original) do
{original, fn
source, {:cont, nil} ->
source
source, {:cont, value} ->
%Response{source | response: [value|source.response]}
source, :done ->
%Response{source | response: :lists.reverse(source.response)}
_, :halt ->
:ok
end}
end
end
end