defmodule Circlex.Struct.Address do import Circlex.Struct.Util defstruct [:chain, :currency, :address, :priv_key] def deserialize(address) do %__MODULE__{ chain: fetch(address, :chain), currency: fetch(address, :currency), address: fetch(address, :address), priv_key: fetch(address, :privKey) } end def serialize(address, include_priv_key \\ true) do Map.merge( %{ chain: address.chain, currency: address.currency, address: address.address }, if(include_priv_key && !is_nil(address.priv_key), do: %{privKey: String.downcase(address.priv_key)}, else: %{} ) ) end def match?(address_struct = %__MODULE__{}, chain, currency, address) do str_eq(address_struct.chain, chain) and str_eq(address_struct.currency, currency) and str_eq(address_struct.address, address) end defp str_eq(a, b) do String.downcase(a) == String.downcase(b) end end