diff options
-rw-r--r-- | CONTRIBUTING.md | 78 | ||||
-rw-r--r-- | README.md | 10 |
2 files changed, 85 insertions, 3 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..e5f0590 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,78 @@ +# How to contribute to Matrix::Client + +## The Contribution Process + +For small changes, feel free to submit a pull request on Github. + +This includes: + +* Bug fixes +* Missing arguments in existing endpoints +* Implement a new endpoint + +If you need guidance or want to discuss something before working on the +code, +[open an issue](https://github.com/matiaslina/Matrix-Client/issues/new) on +Github. + +If you don't get feedback on your pull request, feel free to poke me +via email or Matrix. You can find them on the [README.md](README.md). + +## Coding style + +Please match your coding style to that of the code around it :) + +# Architecture overview + +## Matrix::Client + +This is the main class that implements all the API and must be +posible to do every action of the API from an instance of the client. + +## Matrix::Client::Room + +This class represents an instance of a single room, identified by +its `room_id`. + +The methods that this class should expose are the endpoints that have +the prefix `/_matrix/client/r0/rooms/{roomId}` from the +[Matrix client-server Specification](https://matrix.org/docs/spec/client_server/r0.6.1). + +If there's a method on `Matrix::Client::Room` but not a similar method +on `Matrix::Client`, that is considered a bug (for example: +`Matrix::Client.ban` and `Matrix::Client::Room.ban`). This is to avoid +that the user to instanciate a new `Matrix::Client::Room` and then +call the method. + +## Matrix::Client::Requester + +This role implements the http methods `GET`, `POST`, `PUT`, etc. when +interfacing with a home server. This is necesary for a couple of +reasons: + +* Correct encoding of url queryparms +* Set the correct headers +* Handle errors in a consistent manner + +The `Matrix::Client` and `Matrix::Client::Room` use this role. + +## Matrix::Client::Response + +The module `Matrix::Client::Response` have all the classes that are +used to wrap the HTTP responses from the home server. + +There's nothing to crazy here. For the most part there's some `_` to +`-` conversion for the JSON keys -> raku objects and to remove +unnecessary keys. + +## Matrix::Client::Common::TXN-ID + +This variable it's used every time there's a need for a transaction +id. + +You must increment this variable on use. A +`$Matrix::Client::Common::TXN-ID++;` is enough. + +# How do I... + +## Add a new endpoint? @@ -2,8 +2,11 @@ A [Raku](https://raku.org) library for [Matrix](https://matrix.org). -## Synopsis +## Installation + zef install Matrix::Client + +## Usage use Matrix::Client; @@ -39,9 +42,10 @@ Here's a not complete list of things that can be done: * Send messages * Upload files to a home-server - There are many missing endpoints (you can check a complete checklist [here](https://github.com/matiaslina/perl6-matrix-client/blob/master/endpoints.md)). +If you want to contribute with some endpoint check the +[CONTRIBUTING.md](CONTRIBUTING.md) file. ## Documentation @@ -50,4 +54,4 @@ includes API documentation, basic usage, examples, etc. ## Author -Matías Linares <matias@deprecated.org> | Matrix ID: `@matias:matrix.deprecated.org` +Matías Linares <matias@deprecated.org> | Matrix ID: `@matias:chat.deprecated.org` |