@impl true
def data_type, do: :binary
@impl true
- def serialize!(data), do: :msgpack.pack(data, [])
+ def serialize!(data), do: :msgpack.pack(data, [{:pack_str, :from_binary}])
@impl true
- def serialize(data), do: {:ok, :msgpack.pack(data, [])}
+ def serialize(data), do: {:ok, :msgpack.pack(data, [{:pack_str, :from_binary}])}
@impl true
def deserialize!(data) do
- {:ok, res} = :msgpack.unpack(data, [{:known_atoms, []}, {:unpack_str, :as_binary}])
+ {:ok, res} = :msgpack.unpack(data, [{:validate_string, true}, {:unpack_str, :as_binary}])
res
end
@impl true
def deserialize(data),
- do: :msgpack.unpack(data, [{:known_atoms, []}, {:unpack_str, :as_binary}])
+ do: :msgpack.unpack(data, [{:validate_string, true}, {:unpack_str, :as_binary}])
end
test "MessagePack Serializer" do
assert :binary = MessagePack.data_type()
- assert "\x93\x05\xC4\t123456789\x80" = MessagePack.serialize!([5, "123456789", %{}])
- assert {:ok, "\x93\x05\xC4\t123456789\x80"} = MessagePack.serialize([5, "123456789", %{}])
- assert [5, "123456789", %{}] = MessagePack.deserialize!("\x93\x05\xC4\t123456789\x80")
- assert {:ok, [5, "123456789", %{}]} = MessagePack.deserialize("\x93\x05\xC4\t123456789\x80")
+
+ val = [
+ 5,
+ "this is a string/binary",
+ "123456789",
+ [%{"test" => "ok"}, 45, 54, 56, 77],
+ %{"key" => "true", "value" => 34}
+ ]
+
+ s = MessagePack.serialize!(val)
+ assert ^val = MessagePack.deserialize!(s)
end
test "JSON Serializer" do