defmodule AvroEx.EncodeError do @moduledoc """ Exceptions in encoding Avro data """ defexception [:message] @type t :: %__MODULE__{} @spec new(tuple()) :: t() def new({:schema_mismatch, schema, value, _context}) do type = AvroEx.Schema.type_name(schema) %__MODULE__{message: "Schema Mismatch: Expected value of #{type}, got #{inspect(value)}"} end def new({:invalid_string, str, _context}) do %__MODULE__{message: "Invalid string \"#{inspect(str)}\""} end def new({:invalid_symbol, enum, value, _context}) do type = AvroEx.Schema.type_name(enum) %__MODULE__{ message: "Invalid symbol for #{type}. Expected value in #{inspect(enum.symbols)}, got #{inspect(value)}" } end def new({:incorrect_fixed_size, fixed, binary, _context}) do type = AvroEx.Schema.type_name(fixed) %__MODULE__{ message: "Invalid size for #{type}. Size of #{byte_size(binary)} for #{inspect(binary)}" } end end