aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatias Linares <matiaslina@gmail.com>2021-06-22 23:28:42 -0300
committerMatias Linares <matiaslina@gmail.com>2021-06-22 23:28:42 -0300
commite9ecb53ced8a1c9502871d87be10440997bcef9f (patch)
tree8a5c7579e94379fa840d3916ad888e5457a7f38d
parente57b75a19a8f4a02bf93e99ac9dbf3c06575b219 (diff)
downloadperl6-matrix-client-e9ecb53ced8a1c9502871d87be10440997bcef9f.tar.gz
[WIP] CONTRIBUTING file
-rw-r--r--CONTRIBUTING.md78
-rw-r--r--README.md10
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?
diff --git a/README.md b/README.md
index 442c8ac..367c64d 100644
--- a/README.md
+++ b/README.md
@@ -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`