ecto_ldap v0.4.0 Ecto.Ldap.Adapter.Dumpers

Link to this section Summary

Functions

Returns a function that can convert a value from the Ecto data format to a form that :eldap can interpret

Link to this section Functions

Link to this function dump_array(value)
Link to this function dump_date(value)
Link to this function dump_string(value)
Link to this function dumpers(arg1, type)
dumpers(Ecto.Type.primitive(), Ecto.Type.t()) :: [(term() -> {:ok, term()} | :error) | Ecto.Type.t()]

Returns a function that can convert a value from the Ecto data format to a form that :eldap can interpret.

The functions (or types) returned by these calls will be invoked by Ecto while performing the translation of values to valid eldap data.

nils are simply passed straight through regardless of Ecto datatype. Additionally, :id, :binary, and other unspecified datatypes are directly returned to Ecto for native translation.

Examples

iex> Ecto.Ldap.Adapter.dumpers(:id, :id)
[:id]

iex> Ecto.Ldap.Adapter.dumpers(:string, nil)
{ :ok, nil}

iex> Ecto.Ldap.Adapter.dumpers(:binary, :binary)
[:binary]

iex> Ecto.Ldap.Adapter.dumpers(:woo, :woo)
[:woo]

iex> Ecto.Ldap.Adapter.dumpers(:integer, :integer)
[:integer]

Strings are converted to Erlang character lists.

Examples

iex> [conversion_function] = Ecto.Ldap.Adapter.dumpers({:in, :string}, {:in, :string})
iex> conversion_function.(["yes", "no"])
{ :ok, {:in, ['yes', 'no']}}

iex> [conversion_function] = Ecto.Ldap.Adapter.dumpers(:string, :string)
iex> conversion_function.("bob")
{ :ok, 'bob'}
iex> conversion_function.("Sören")
{ :ok, [83, 195, 182, 114, 101, 110]}
iex> conversion_function.("José")
{ :ok, [74, 111, 115, 195, 169]}
iex> conversion_function.(:atom)
{ :ok, 'atom'}

iex> [conversion_function] = Ecto.Ldap.Adapter.dumpers({:array, :string}, {:array, :string})
iex> conversion_function.(["list", "of", "skills"])
{ :ok, ['list', 'of', 'skills']}

Ecto.DateTimes are converted to a stringified ASN.1 GeneralizedTime format in UTC. Currently, fractional seconds are truncated.

Examples

iex> [conversion_function] = Ecto.Ldap.Adapter.dumpers(:datetime, :datetime)
iex> conversion_function.({{2016, 2, 2}, {0, 0, 0, 0}})
{ :ok, '20160202000000Z'}

iex> [conversion_function] = Ecto.Ldap.Adapter.dumpers(Ecto.DateTime, Ecto.DateTime)
iex> conversion_function.({{2016, 4, 1}, {12, 34, 56, 789000}})
{ :ok, '20160401123456Z'}
iex> conversion_function.({{2016, 4, 1}, {12, 34, 56, 0}})
{ :ok, '20160401123456Z'}