diff options
author | Matias Linares <matiaslina@gmail.com> | 2018-10-14 18:29:06 -0300 |
---|---|---|
committer | Matias Linares <matiaslina@gmail.com> | 2018-10-14 18:29:06 -0300 |
commit | 3d6d5a4828e602837886358918e324f34e37b962 (patch) | |
tree | adde3b6f88828da5f1ecdb0e98596868a54e4e86 | |
parent | 47aaf852798acb30f32f3e3ae7ca0fe28e9ac18e (diff) | |
parent | 66c31dda1500b54fd284b82478019e9da6a7e9d1 (diff) | |
download | perl6-matrix-client-3d6d5a4828e602837886358918e324f34e37b962.tar.gz |
Merge branch 'master' of ssh://deprecated.org:22333/var/www/cgit/perl6-matrix-client
-rw-r--r-- | docs/client.pod6 | 30 | ||||
-rw-r--r-- | docs/room.pod6 | 68 | ||||
-rw-r--r-- | examples/run.p6 | 21 |
3 files changed, 119 insertions, 0 deletions
diff --git a/docs/client.pod6 b/docs/client.pod6 index 6256cde..302e99b 100644 --- a/docs/client.pod6 +++ b/docs/client.pod6 @@ -242,4 +242,34 @@ the servers may choose to implement additional access control for this endpoint. Uploads a file to the server. It returns the MXC URI to the uploaded content. +=head2 run + + method run(Int :$sleep = 10, :$sync-filter? --> Supply) + +Returns a C<Supply> that emits L<Matrix::Response::StateEvent> with the last +events. The C<$sleep> parameter is to sleep for that amount of seconds before +making a L<sync> request again. The C<$sync-filter> is the same parameter that +will be passed to L<sync> method to filter out the useful events. + +This can be useful to turn something like: + + my $since; + loop { + $response = $client.sync(:$since); + $since = $response.next-batch; + + for $response.joined-rooms -> $room { + for $room.timeline.event -> $event { + # Do something useful with $event + } + } + } + +into: + + my $sup = $client.run(); + react whenever $sup -> $event { + # Do something useful with $event + } + =end pod diff --git a/docs/room.pod6 b/docs/room.pod6 new file mode 100644 index 0000000..1df8c84 --- /dev/null +++ b/docs/room.pod6 @@ -0,0 +1,68 @@ +=begin pod + +=TITLE class Matrix::Client::Room + +=SUBTITLE Room requester + + class Matrix::Client::Room does Matrix::Client::Requester {} + +The C<Matrix::Client::Room> is a shortcut to all the C</rooms/:id> endpoints. It +does the role as L<Matrix::Client::Requester> so one can instantiate a Room with +the one's access token and the room id to make requests directly to this room +without the need for a L<Matrix::Client>. + +=head1 Example + + my $room-id = "!pGOClvZafMH:matrix.server.com"; + my $home-server = "https://matrix.server.com"; + my $access-token = "…"; + + my Matrix::Client::Room $room .= new( + :$access-token, + :$home-server, + :id($room-id) + ); + + say $room.name; + +=head1 Methods + +=head2 name + + method name(--> Str) + +Returns the name of the room. If no C<m.room.name> was emmited (i.e.: no name +was set for this room), then an empty string is returned. + +=head2 send + + method send(Str $body!, Str :$type? = "m.text") + +Sends a message to the room. It will return the C<event_id> for this message. + +=head2 state + + multi method state(--> Seq) + multi method state(Str $event-type) + +Get the state events for the current state of a room. it will return a C<Seq> +for every event on that room. + +If an C<$event-type> is passed, the return value will be the value of that +single event. + +=head2 send-state + + method send-state(Str:D $event-type, :$state-key = "", *%args --> Str) + +Send a state event to the server. The event will be overwritten if the +C<$event-type>, C<$state-key> and the arguments all match with a state in the +server. + +It will return the C<event_id> for this state change. + +=head2 leave + + method leave() + +Leaves the room. diff --git a/examples/run.p6 b/examples/run.p6 new file mode 100644 index 0000000..f78df16 --- /dev/null +++ b/examples/run.p6 @@ -0,0 +1,21 @@ +#!/usr/bin/env perl6 +use v6; +use lib <lib>; +use Matrix::Client; + +sub MAIN(Str:D $username, Str:D $password, :$home-server = "https://matrix.deprecated.org") { + my Matrix::Client $client .= new: :$home-server; + $client.login($username, $password); + + my $sup = $client.run(:sleep<5>); + + signal(SIGINT).tap({ + say "Bye"; + $client.logout; + exit 0; + }); + + react whenever $sup -> $ev { + say $ev; + } +} |