QlikElixir.QIX.Protocol (qlik_elixir v0.3.5)
View SourceJSON-RPC protocol handling for Qlik Engine API.
The Qlik Engine API uses JSON-RPC 2.0 over WebSocket.
Message Format
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "ClassName.Method",
"handle": 0,
"params": [...]
}Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {...}
}Error:
{
"jsonrpc": "2.0",
"id": 1,
"error": {"code": -32602, "message": "Invalid params"}
}Handles
0= Global object (used for OpenDoc, GetActiveDoc, etc.)- App handle = returned from OpenDoc (e.g.,
1) - Object handle = returned from GetObject (e.g.,
2,3, etc.)
Summary
Functions
Builds params for Doc.GetAllSheets request.
Builds params for GenericObject.GetHyperCubeData request.
Builds params for GenericObject.GetLayout request.
Builds params for Doc.GetObject request.
Builds params for Global.OpenDoc request.
Decodes a JSON-RPC response.
Encodes a JSON-RPC request.
Extracts the qHandle from an OpenDoc or GetObject response.
Extracts hypercube data matrix from GetHyperCubeData response.
Extracts sheet list from GetAllSheets response.
Functions
@spec build_get_all_sheets() :: list()
Builds params for Doc.GetAllSheets request.
Builds params for GenericObject.GetHyperCubeData request.
Parameters
path- Path to the hypercube definition (usually "/qHyperCubeDef")pages- List of page requests (defaults to first 1000 rows)
@spec build_get_layout() :: list()
Builds params for GenericObject.GetLayout request.
Builds params for Doc.GetObject request.
Note: QIX API expects params as a map, not array.
Builds params for Global.OpenDoc request.
Note: QIX API expects params as a map, not array.
Decodes a JSON-RPC response.
Returns:
{:ok, %{id: id, result: result}}for successful responses{:error, %{id: id, code: code, message: message}}for error responses{:error, :invalid_json}for malformed JSON{:error, :invalid_protocol}for non-JSON-RPC messages
@spec encode_request(String.t(), non_neg_integer(), list(), pos_integer()) :: {:ok, String.t(), pos_integer()}
Encodes a JSON-RPC request.
Returns {:ok, json_string, request_id}.
@spec extract_handle(map() | nil) :: {:ok, non_neg_integer()} | {:error, :no_handle}
Extracts the qHandle from an OpenDoc or GetObject response.
Extracts hypercube data matrix from GetHyperCubeData response.
Extracts sheet list from GetAllSheets response.