View Source Google.Protobuf (protobuf v0.14.1)
Utility functions for working with Google Protobuf structs.
Summary
Functions
Converts a Google.Protobuf.Timestamp
struct to a DateTime
struct.
Converts a t:map()
to a Google.Protobuf.Struct
struct recursively
wrapping values in their Google.Protobuf.Value
equivalents.
Converts a DateTime
struct to a Google.Protobuf.Timestamp
struct.
Converts a Google.Protobuf.Struct
struct to a t:map()
recursively
converting values to their Elixir equivalents.
Functions
@spec from_datetime(DateTime.t()) :: Google.Protobuf.Timestamp.t()
Converts a Google.Protobuf.Timestamp
struct to a DateTime
struct.
## Examples
iex> from_datetime(~U[1970-01-01 00:00:05.000000Z])
%Google.Protobuf.Timestamp{seconds: 5, nanos: 0}
@spec from_map(map()) :: Google.Protobuf.Struct.t()
Converts a t:map()
to a Google.Protobuf.Struct
struct recursively
wrapping values in their Google.Protobuf.Value
equivalents.
Examples
iex> from_map(%{})
%Google.Protobuf.Struct{}
@spec to_datetime(Google.Protobuf.Timestamp.t()) :: DateTime.t()
Converts a DateTime
struct to a Google.Protobuf.Timestamp
struct.
Note: Elixir DateTime.from_unix!/2
will convert units to
microseconds internally. Nanosecond precision is not guaranteed.
See examples for details.
Examples
iex> to_datetime(%Google.Protobuf.Timestamp{seconds: 5, nanos: 0})
~U[1970-01-01 00:00:05.000000Z]
iex> one = to_datetime(%Google.Protobuf.Timestamp{seconds: 10, nanos: 100})
...> two = to_datetime(%Google.Protobuf.Timestamp{seconds: 10, nanos: 105})
...> DateTime.diff(one, two, :nanosecond)
0
@spec to_map(Google.Protobuf.Struct.t()) :: map()
Converts a Google.Protobuf.Struct
struct to a t:map()
recursively
converting values to their Elixir equivalents.
Examples
iex> to_map(%Google.Protobuf.Struct{})
%{}
iex> to_map(%Google.Protobuf.Struct{
fields: %{
"key_one" => %Google.Protobuf.Value{
kind: {:string_value, "value_one"},
},
"key_two" => %Google.Protobuf.Value{
kind: {:number_value, 1234.0},
}
},
})
%{"key_one" => "value_one", "key_two" => 1234.0}