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_in(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'}