Current section
Files
Jump to
Current section
Files
lib/analytics_3i/parsers/value.ex
defmodule Analytics3i.Parsers.Value do
defmodule Error do
defexception reason: nil, id: nil
@type t :: %__MODULE__{id: bitstring, reason: any}
def message(%__MODULE__{reason: reason, id: nil}), do: inspect(reason)
def message(%__MODULE__{reason: reason, id: id}), do: "[UUID: #{id}] - #{inspect reason}"
end
defstruct data: nil, id: nil, iteration: nil
def reply(%{uuid: uuid, owner: owner, value: %__MODULE__{} = value}) when is_bitstring(uuid) and is_pid(owner) do
send(owner, {:parsed, value})
end
def reply(%{value: %__MODULE__{} = value}), do: {:ok, value.data}
def reply(_), do: :noop
def error(%{uuid: uuid, owner: owner, reason: reason}) when is_bitstring(uuid) and is_pid(owner) do
raise Error, id: uuid, reason: reason
end
def error(%{reason: reason}), do: {:error, reason}
end