use JSON::Tiny; use Matrix::Client::Common; use Matrix::Client::Requester; unit class Matrix::Client::Room does Matrix::Client::Requester; has $!name; has $.id; submethod TWEAK { $!url-prefix = "/rooms/$!id"; } method !get-name() { my $data = $.state('m.room.name'); $!name = $data; } method name() { unless $!name.so { self!get-name() } $!name } method messages() { my $res = $.get("/messages"); my $data = from-json($res.content); return $data.clone; } method send(Str $body!, Str :$type? = "m.text") { $Matrix::Client::Common::TXN-ID++; my $res = $.put( "/send/m.room.message/{$Matrix::Client::Common::TXN-ID}", msgtype => $type, body => $body ); from-json($res.content) } method leave() { $.post('/leave') } method gist(--> Str) { "Room" } method Str(--> Str) { "Room" }