Packages
livebook
0.9.1
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
proto/lib/livebook_proto.ex
defmodule LivebookProto do
@moduledoc false
alias LivebookProto.{
CreateSecretRequest,
CreateSecretResponse,
HandshakeRequest,
HandshakeResponse,
Request,
Response
}
@request_mapping (for {_id, field_prop} <- Request.__message_props__().field_props,
into: %{} do
{field_prop.type, field_prop.name_atom}
end)
@response_mapping (for {_id, field_prop} <- Response.__message_props__().field_props,
into: %{} do
{field_prop.type, field_prop.name_atom}
end)
@type request_proto :: HandshakeRequest.t() | CreateSecretRequest.t()
@type response_proto :: HandshakeResponse.t() | CreateSecretResponse.t()
@doc """
Builds a request frame with given data and id.
"""
@spec build_request_frame(request_proto(), integer()) :: {:binary, iodata()}
def build_request_frame(%struct{} = data, id \\ -1) do
type = request_type(struct)
message = Request.new!(id: id, type: {type, data})
{:binary, Request.encode(message)}
end
@doc """
Builds a create secret request struct.
"""
@spec build_create_secret_request(keyword()) :: CreateSecretRequest.t()
defdelegate build_create_secret_request(fields), to: CreateSecretRequest, as: :new!
@doc """
Builds a handshake request struct.
"""
@spec build_handshake_request(keyword()) :: HandshakeRequest.t()
defdelegate build_handshake_request(fields), to: HandshakeRequest, as: :new!
@doc """
Builds a response with given data and id.
"""
@spec build_response(response_proto(), integer()) :: Response.t()
def build_response(%struct{} = data, id \\ -1) do
type = response_type(struct)
Response.new!(id: id, type: {type, data})
end
defp request_type(module), do: Map.fetch!(@request_mapping, module)
defp response_type(module), do: Map.fetch!(@response_mapping, module)
end