Packages
protox
1.6.7
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/protox/json_library.ex
defmodule Protox.JsonLibrary do
@moduledoc """
The behaviour to implement when wrapping a JSON library.
"""
@callback load() :: {:ok, atom()} | :error
@doc """
Should wrap any exception of the underlying library in Protox.JsonDecodingError.
"""
@callback decode!(atom(), iodata()) :: term() | no_return()
@doc """
Should wrap any exception of the underlying library in Protox.JsonEncodingError.
"""
@callback encode!(atom(), term()) :: iodata() | no_return()
@doc false
def get_library(opts, decoding_or_encoding) do
json_library_wrapper = Keyword.get(opts, :json_library, Protox.Jason)
case json_library_wrapper.load() do
{:ok, json_library} ->
{json_library_wrapper, json_library}
:error ->
message = "cannot load JSON library. Please check your project dependencies."
case decoding_or_encoding do
:decode -> raise Protox.JsonDecodingError.new(message)
:encode -> raise Protox.JsonEncodingError.new(message)
end
end
end
end