Packages
protox
1.6.10
2.0.9
2.0.8
2.0.7
2.0.6
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
2.0.0-dev
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
retired
1.7.3
1.7.2
1.7.1
1.7.0
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.1
1.1.0
1.0.0
0.25.0
0.24.0
0.23.1
0.23.0
0.22.0
0.21.0
0.20.0
0.19.1
0.19.0
0.18.0
0.17.0
0.16.2
0.16.1
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.0
0.7.1
0.7.0
A fast, easy to use and 100% conformant Elixir library for Google Protocol Buffers (aka protobuf)
Current section
Files
Jump to
Current section
Files
lib/google/protobuf/list_value.ex
# Proto definition
# https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/struct.proto
# JSON encoding
# https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#listvalue
defmodule Protox.Google.Protobuf.ListValue do
@moduledoc false
use Protox.Define,
enums: [],
messages: [
{
Google.Protobuf.ListValue,
:proto3,
[
Protox.Field.new!(
kind: :unpacked,
label: :repeated,
name: :values,
tag: 1,
type: {:message, Google.Protobuf.Value}
)
]
}
]
end
defimpl Protox.JsonMessageDecoder, for: Google.Protobuf.ListValue do
def decode_message(initial_message, value) when is_list(value) do
values =
Enum.map(value, fn entry ->
Protox.JsonMessageDecoder.decode_message(%Google.Protobuf.Value{}, entry)
end)
struct!(initial_message, values: values)
end
def decode_message(_initial_message, _value) do
raise Protox.JsonDecodingError.new("invalid ListValue")
end
end
defimpl Protox.JsonMessageEncoder, for: Google.Protobuf.ListValue do
def encode_message(%Google.Protobuf.ListValue{} = msg, json_encode) do
json_list =
msg.values
|> Stream.map(&Protox.JsonMessageEncoder.encode_message(&1, json_encode))
|> Enum.join(",")
["[", json_list, "]"]
end
end