cadda451300b35e53a294c6ed026280a8c06778f
This handles the fact that when using the /sync endpoint, events for already joined rooms are also in the "join" dictionary in the response. The firing of the "joined" event is moved to client:_make_room() and done only the first time that the room creation is requested. This also fixes bogus behavior: previosly, when a message was sent to a room there would be multiople places where the "joined" event would be fired, and message events pushed multile times onto the room object, which would call the event handlers more than once for each message. Ugh.
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%