diff options
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r-- | CONTRIBUTING.md | 78 |
1 files changed, 78 insertions, 0 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? |