Current section
Files
Jump to
Current section
Files
lib/jsonrpc2/request.ex
defmodule JSONRPC2.Request do
@moduledoc """
JSON-RPC 2.0 Request object utilites.
"""
@type request ::
{JSONRPC2.method, JSONRPC2.params} |
{JSONRPC2.method, JSONRPC2.params, JSONRPC2.id}
@doc """
Returns a serialized `request` using `serializer`.
See the README for more information on serializers.
"""
@spec serialized_request(request, module) :: {:ok, map} | {:error, any}
def serialized_request(request, serializer) do
serializer.encode(request(request))
end
@doc """
Returns a map representing the JSON-RPC2.0 request object for `request`.
"""
@spec request(request) :: map
def request(request)
def request({method, params})
when is_binary(method) and (is_list(params) or is_map(params)) do
%{
"jsonrpc" => "2.0",
"method" => method,
"params" => params
}
end
def request({method, params, id})
when (is_number(id) or is_binary(id)) do
{method, params}
|> request()
|> Map.put("id", id)
end
end