ae18e3374dc395a64508315082d8f79038c9e16d
Whether to sync after connecting or not is desired depends on the application, and it's better to remove the possibility of doing so. Having to done one explicit call to :sync() is not a big deal, and makes the intention of code using the module clearer. And our code simpler.
Matrix Client-Server API for Lua
This is closely modelled after the official matrix-python-sdk.
Requirements
- Lua 5.1, 5.2, 5.3, or LuaJIT — development and testing is only being done with 5.3, YMMV!
- The cjson module.
- One of the supported HTTP client libraries:
If you use LuaRocks, you can get the dependencies installed using the following commands:
luarocks install --server=http://luarocks.org/dev http
luarocks install lua-cjson
Self-promotion bit: If you use the Z shell and want something like virtualenv for Lua, please do try RockZ.
Usage
The library provides two levels of abstraction. The low-level layer wraps the raw HTTP API. The high-level layer wraps the low-level layer and provides an object model to perform actions on.
High-level matrix.client interface:
local client = require("matrix").client("http://localhost:8008")
local token = client:register_with_password("jdoe", "sup3rsecr1t")
local room = client:create_room("my_room_alias")
room:send_text("Hello!")
Low-level matrix.api interface:
local matrix = require("matrix")
local api = matrix.api("http://localhost:8080")
local response = api:register("m.login.password",
{ user = "jdoe", password = "sup3rsecr1t" })
api.token = response.token
handle_events(api:sync())
response = api:create_room({ alias = "my_room_alias" })
api:send_text(response.room_id, "Hello!")
More Examples
For the low-level matrix.api:
For the high-level matrix.client:
More examples can be found in the examples subdirectory.
Description
Languages
Lua
100%