4e9899dbb51397cd2da21377f7dfe40a9a24ed5c
This removes the support for passing values to eventable.functions() and eventable.object() which are bound to be passed to handlers. On top of simplifying the code overall, this also avoids having three different implementations of the fire() function. In the existing code, the only case in which a handler argument is fixed is for objects which pass themselves. This use case is covered by eventable.object(), so the removed code was not realy ever used.
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%