Packages
phoenix_gen_api
0.0.2
2.22.0
2.21.1
2.21.0
2.20.1
2.20.0
2.19.0
2.18.1
2.18.0
2.17.1
2.17.0
2.16.0
2.15.0
2.14.0
2.13.0
2.12.0
2.11.0
2.10.0
2.9.1
2.9.0
2.8.0
2.7.0
2.6.1
2.6.0
2.5.0
2.4.0
2.3.0
2.2.0
2.1.1
2.1.0
2.0.1
2.0.0
1.2.0
1.1.3
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
0.2.1
0.2.0
0.1.1
0.1.0
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
A library for fast develop APIs in Elixir cluster, using Phoenix Channels for transport data, auto pull api configs from service nodes.
Current section
Files
Jump to
Current section
Files
lib/phoenix_gen_api/structs/response.ex
defmodule PhoenixGenApi.Structs.Response do
@moduledoc """
Response event from server to client.
"""
alias __MODULE__
@derive Nestru.Encoder
defstruct [
# string, unique id from request. Make by client.
# send back to client for identify request.
:request_id,
# map, field -> value, result for request. If is async/stream
# this field is empty for first time. Client must wait for next response.
:result,
# boolean, success or not. for case async/stream, server is processing
success: false,
# string, error message.
error: "",
# boolean, is async response or not.
async: false,
# boolean, indicates has more data for stream request.
has_more: false,
]
@doc """
Create Request from params for convert data map from websocket api.
"""
def encode!(res = %Response{}) do
Nestru.encode!(res)
end
def error_response(request_id, error) do
%Response{request_id: request_id, error: error}
end
def sync_response(request_id, result) do
%Response{request_id: request_id, result: result, success: true}
end
def success_response(request_id, result) do
%Response{request_id: request_id, result: result, success: true}
end
def async_response(request_id) do
%Response{request_id: request_id, async: true, success: true}
end
def stream_response(request_id, result, has_more \\ true) do
%Response{request_id: request_id, result: result, async: true, has_more: has_more}
end
def is_error?(%Response{success: false}), do: true
end