diff options
Diffstat (limited to 'lib/Matrix/Client/Room.pm6')
-rw-r--r-- | lib/Matrix/Client/Room.pm6 | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/Matrix/Client/Room.pm6 b/lib/Matrix/Client/Room.pm6 new file mode 100644 index 0000000..5601f33 --- /dev/null +++ b/lib/Matrix/Client/Room.pm6 @@ -0,0 +1,46 @@ +use JSON::Tiny; +use Matrix::Client::Common; +use Matrix::Client::Requester; + +unit class Matrix::Client::Room does Matrix::Client::Requester; + +has $.name is rw; +has $.id is rw; +has $!prev-batch; + +submethod BUILD(Str :$id!, :$json, :$home-server!) { + $!home-server = $home-server; + $!id = $id; + $!url-prefix = "/rooms/$!id"; + $!prev-batch = $json<timeline><prev_batch>; + + if so $json { + my @events = $json<state><events>.clone; + for @events -> $ev { + if $ev<type> eq "m.room.name" { + $!name = $ev<content><name>; + } + } + } + + # FIXME: Should be a 1:1 conversation + unless $!name { + $!name = "Unknown"; + } +} + +method messages() { + my $res = $.get("/messages"); + my $data = from-json($res.content); + + return $data<chunk>.clone; +} + +method send($room-id, Str $body!, Str :$type? = "m.text") { + $Matrix::Client::Common::TXN-ID++; + $.put("/send/m.room.message/{$Matrix::Client::Common::TXN-ID}", msgtype => $type, body => $body) +} + +method gist(--> Str) { + "Room<name: $.name, id: $.id>" +} |