diff --git a/README.md b/README.md new file mode 100644 index 0000000..1a888bc --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +# Matrix Client SDK for GLib + +This is a Matrix client-server SDK for GLib >= 2.40. As of now it +mostly mimics the official Python SDK. + +# Usage + +The SDK provides 2 layers of interaction. The low-level layer just wraps the +raw HTTP API calls. The high-level layer wraps the low-level layer and provides +an object model to perform actions on. + +## Client + +``` c + +#include + +gchar *token = NULL; +MatrixClient *client = matrix_client_new("http://localhost:8008", NULL); +matrix_client_register_with_password(client, "foobar", "monkeyā€¯); +g_object_get(client, "token", &token, NULL); +room = matrix_client_create_room(client, "my_room_alias"); +matrix_room_send_text(room, "Hello!"); +``` + +## API + +```c +#include + +static void +sync_finished(MatrixAPI *api, + MatrixAPIResponse *response, + gpointer data) +{ + /* Do something with the response */ +} + +static void +message_sent(MatrixAPI *api, + MatrixAPIResponse *response, + gpointer data) +{ + /* Do something with the response */ +} + +matrix = matrix_api_new("https://matrix.org", "some_token"); +g_signal_connect(G_OBJECT(api), + "request-finished", + G_CALLBACK(sync_finished), + NULL); +matrix_api_initial_sync(matrix, sync_finished); +matrix_api_send_message(matrix, "!roomid:matrix.org", "Hello!", message_sent); +``` + +# Structure + +The SDK is split into two modules: `MatrixAPI` and `MatrixClient`. + +## API + +This contains the raw HTTP API calls and has minimal business logic. You can +set the access token (`token`) to use for requests as well as set a custom +transaction ID (`txn_id`) which will be incremented for each request. + +## Client + +This encapsulates the API module and provides object models such as `Room`.