diff options
Diffstat (limited to 'lib/Matrix')
-rw-r--r-- | lib/Matrix/Client.rakumod (renamed from lib/Matrix/Client.pm6) | 18 | ||||
-rw-r--r-- | lib/Matrix/Client/Common.rakumod (renamed from lib/Matrix/Client/Common.pm6) | 0 | ||||
-rw-r--r-- | lib/Matrix/Client/Exception.rakumod (renamed from lib/Matrix/Client/Exception.pm6) | 9 | ||||
-rw-r--r-- | lib/Matrix/Client/MediaStore.rakumod | 6 | ||||
-rw-r--r-- | lib/Matrix/Client/Requester.rakumod (renamed from lib/Matrix/Client/Requester.pm6) | 0 | ||||
-rw-r--r-- | lib/Matrix/Client/Response.rakumod (renamed from lib/Matrix/Response.pm6) | 60 | ||||
-rw-r--r-- | lib/Matrix/Client/Room.rakumod (renamed from lib/Matrix/Client/Room.pm6) | 16 |
7 files changed, 55 insertions, 54 deletions
diff --git a/lib/Matrix/Client.pm6 b/lib/Matrix/Client.rakumod index 2e26ee7..01babe5 100644 --- a/lib/Matrix/Client.pm6 +++ b/lib/Matrix/Client.rakumod @@ -1,7 +1,7 @@ use HTTP::Request::Common; use URI::Encode; use JSON::Fast; -use Matrix::Response; +use Matrix::Client::Response; use Matrix::Client::Common; use Matrix::Client::Room; use Matrix::Client::Requester; @@ -123,14 +123,14 @@ method whoami { method devices(Matrix::Client:D: --> Seq) { my $data = from-json($.get("/devices").content); $data<devices>.map(-> $device-data { - Matrix::Response::Device.new(|$device-data) + Matrix::Client::Response::Device.new(|$device-data) }) } #| GET - /_matrix/client/r0/devices/{deviceId} -method device(Matrix::Client:D: Str $device-id where *.chars > 0 --> Matrix::Response::Device) { +method device(Matrix::Client:D: Str $device-id where *.chars > 0 --> Matrix::Client::Response::Device) { my $device-data = from-json($.get("/devices/$device-id").content); - Matrix::Response::Device.new(|$device-data) + Matrix::Client::Response::Device.new(|$device-data) } #| PUT - /_matrix/client/r0/devices/{deviceId} @@ -143,10 +143,10 @@ method update-device(Matrix::Client:D: ## Presence #| GET - /_matrix/client/r0/presence/{userId}/status -method presence(Matrix::Client:D: $user-id? --> Matrix::Response::Presence) { +method presence(Matrix::Client:D: $user-id? --> Matrix::Client::Response::Presence) { my $id = $user-id // $.whoami; my $data = from-json($.get("/presence/$id/status").content); - Matrix::Response::Presence.new(|$data) + Matrix::Client::Response::Presence.new(|$data) } #| PUT - /_matrix/client/r0/presence/{userId}/status @@ -164,7 +164,7 @@ multi method tags(Str $room-id, Str:D $tag, $order) { #| GET - /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags multi method tags(Str $room-id) { my $id = $.whoami; - Matrix::Response::Tag.new(from-json($.get("/user/$id/rooms/$room-id/tags").content)) + Matrix::Client::Response::Tag.new(from-json($.get("/user/$id/rooms/$room-id/tags").content)) } #| DELETE - /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags/{tag} @@ -188,13 +188,13 @@ multi method sync(Str:D :$sync-filter, Str :$since = "") { :$since ); - Matrix::Response::Sync.new($res.content) + Matrix::Client::Response::Sync.new($res.content) } #| GET - /_matrix/client/r0/sync multi method sync(:$since = "") { my $res = $.get("/sync", timeout => 30000, since => $since); - Matrix::Response::Sync.new($res.content) + Matrix::Client::Response::Sync.new($res.content) } # Rooms diff --git a/lib/Matrix/Client/Common.pm6 b/lib/Matrix/Client/Common.rakumod index 83cf65d..83cf65d 100644 --- a/lib/Matrix/Client/Common.pm6 +++ b/lib/Matrix/Client/Common.rakumod diff --git a/lib/Matrix/Client/Exception.pm6 b/lib/Matrix/Client/Exception.rakumod index e02f572..6fb4c75 100644 --- a/lib/Matrix/Client/Exception.pm6 +++ b/lib/Matrix/Client/Exception.rakumod @@ -1,14 +1,15 @@ -package X::Matrix { - class Response is Exception { +module Matrix::Client::Exception { + + class X::Matrix::Response is Exception { has $.code; has $.error; - method message { + method message(--> Str) { "$!code: $!error" } } - class MXCParse is Exception { + class X::Matrix::MXCParse is Exception { has $.uri; method message { "Cannot parse '$!uri'" } diff --git a/lib/Matrix/Client/MediaStore.rakumod b/lib/Matrix/Client/MediaStore.rakumod index 9779db2..afea9e5 100644 --- a/lib/Matrix/Client/MediaStore.rakumod +++ b/lib/Matrix/Client/MediaStore.rakumod @@ -3,7 +3,7 @@ use URI::Escape; use Matrix::Client::Requester; use Matrix::Client::Exception; -use Matrix::Response; +use Matrix::Client::Response; unit class Matrix::Client::MediaStore does Matrix::Client::Requester; @@ -110,7 +110,7 @@ multi method thumbnail(Str $server-name, Str $media-id, } #| GET - /_matrix/media/r0/config -method config(--> Matrix::Response::MediaStore::Config) { +method config(--> Matrix::Client::Response::MediaStore::Config) { my $response = $.get("/config"); - Matrix::Response::MediaStore::Config.new(from-json($response.content)) + Matrix::Client::Response::MediaStore::Config.new(from-json($response.content)) } diff --git a/lib/Matrix/Client/Requester.pm6 b/lib/Matrix/Client/Requester.rakumod index 36a9f69..36a9f69 100644 --- a/lib/Matrix/Client/Requester.pm6 +++ b/lib/Matrix/Client/Requester.rakumod diff --git a/lib/Matrix/Response.pm6 b/lib/Matrix/Client/Response.rakumod index a0b2896..3836a20 100644 --- a/lib/Matrix/Response.pm6 +++ b/lib/Matrix/Client/Response.rakumod @@ -1,13 +1,13 @@ use JSON::Fast; -unit module Matrix::Response; +unit module Matrix::Client::Response; -class Matrix::Response::Event { +class Event { has %.content; has $.type is required; } -class Matrix::Response::RoomEvent is Matrix::Response::Event { +class RoomEvent is Event { has Str $.sender; has Int $.origin_server_ts; has $.event_id; @@ -18,57 +18,57 @@ class Matrix::Response::RoomEvent is Matrix::Response::Event { method room-id { $.room_id } } -class Matrix::Response::StateEvent is Matrix::Response::RoomEvent { +class StateEvent is RoomEvent { has $.prev_content; has $.state_key; } -class Matrix::Response::MemberEvent is Matrix::Response::StateEvent { +class MemberEvent is StateEvent { has $.type is required where 'm.room.member'; } -class Matrix::Response::Timeline { - has Matrix::Response::Event @.events; +class Timeline { + has Event @.events; has Bool $limited; has Str $prev-batch; } -class Matrix::Response::RoomInfo { +class RoomInfo { has $.room-id is required; - has Matrix::Response::Event @.state; - has Matrix::Response::Timeline $.timeline; + has Event @.state; + has Timeline $.timeline; method gist(--> Str) { - "<Matrix::Response::RoomInfo: $.room-id>" + "<RoomInfo: $.room-id>" } } -class Matrix::Response::InviteInfo { +class InviteInfo { has $.room-id is required; - has Matrix::Response::Event @.events; + has Event @.events; method gist(--> Str) { - "<Matrix::Response::InviteState: $.room-id>" + "<InviteState: $.room-id>" } } sub gather-events($room-id, $from) { gather for $from<events>.List -> $ev { - take Matrix::Response::StateEvent.new(:room_id($room-id), |$ev); + take StateEvent.new(:room_id($room-id), |$ev); } } -class Matrix::Response::Messages { +class Messages { has $.start; has $.end; - has Matrix::Response::RoomEvent @.messages; + has RoomEvent @.messages; } -class Matrix::Response::Sync { +class Sync { has Str $.next-batch; - has Matrix::Response::Event @.presence; - has Matrix::Response::RoomInfo @.joined-rooms; - has Matrix::Response::InviteInfo @.invited-rooms; + has Event @.presence; + has RoomInfo @.joined-rooms; + has InviteInfo @.invited-rooms; multi method new(Str $json) { return self.new(from-json($json)); @@ -76,31 +76,31 @@ class Matrix::Response::Sync { multi method new(Hash $json) { my $next-batch = $json<next_batch>; - my Matrix::Response::Event @presence; - my Matrix::Response::RoomInfo @joined-rooms; - my Matrix::Response::InviteInfo @invited-rooms; + my Event @presence; + my RoomInfo @joined-rooms; + my InviteInfo @invited-rooms; for $json<presence><events>.List -> $ev { - @presence.push(Matrix::Response::Event.new(|$ev)); + @presence.push(Event.new(|$ev)); } for $json<rooms><join>.kv -> $room-id, $data { my @state = gather-events($room-id, $data<state>); - my $timeline = Matrix::Response::Timeline.new( + my $timeline = Timeline.new( limited => $data<timeline><limited>, prev-batch => $data<timeline><prev_batch>, events => gather-events($room-id, $data<timeline>) ); - @joined-rooms.push(Matrix::Response::RoomInfo.new( + @joined-rooms.push(RoomInfo.new( :$room-id, :$timeline, :@state )); } for $json<rooms><invite>.kv -> $room-id, $data { my @events = gather-events($room-id, $data<invite_state>); - @invited-rooms.push(Matrix::Response::InviteInfo.new( + @invited-rooms.push(InviteInfo.new( :$room-id, :@events )); } @@ -133,7 +133,7 @@ class Tag { } } -class Matrix::Response::Device { +class Device { has Str $.device-id; has $.display-name; has $.last-seen-ip; @@ -147,7 +147,7 @@ class Matrix::Response::Device { ) { } } -class Matrix::Response::MediaStore::Config { +class MediaStore::Config { has Int $.upload-size; method new(%config) { diff --git a/lib/Matrix/Client/Room.pm6 b/lib/Matrix/Client/Room.rakumod index 3d6ecaa..1e8c582 100644 --- a/lib/Matrix/Client/Room.pm6 +++ b/lib/Matrix/Client/Room.rakumod @@ -1,7 +1,7 @@ use JSON::Fast; use Matrix::Client::Common; use Matrix::Client::Requester; -use Matrix::Response; +use Matrix::Client::Response; unit class Matrix::Client::Room does Matrix::Client::Requester; @@ -56,9 +56,9 @@ method aliases(--> List) { ## Getting events for a room #| GET - /_matrix/client/r0/rooms/{roomId}/event/{eventId} -method event(Str $event-id --> Matrix::Response::RoomEvent) { +method event(Str $event-id --> Matrix::Client::Response::RoomEvent) { my %data = from-json($.get("/event/$event-id").content); - Matrix::Response::RoomEvent.new(|%data) + Matrix::Client::Response::RoomEvent.new(|%data) } #| GET - /_matrix/client/r0/rooms/{roomId}/state @@ -66,7 +66,7 @@ multi method state(--> Seq) { my $data = from-json($.get('/state').content); gather for $data.List -> $event { - take Matrix::Response::StateEvent.new(:room-id($.id), |$event) + take Matrix::Client::Response::StateEvent.new(:room-id($.id), |$event) } } @@ -86,7 +86,7 @@ method messages( Str:D :$from!, Str :$to, Str :$dir where * eq 'f'|'b' = 'f', Int :$limit = 10, :%filter, - --> Matrix::Response::Messages + --> Matrix::Client::Response::Messages ) { my $res = $.get( "/messages", :$from, :$to, :$dir, :$limit, :%filter @@ -95,10 +95,10 @@ method messages( my @messages = $data<chunk>.map(-> $ev { - Matrix::Response::RoomEvent.new(|$ev) + Matrix::Client::Response::RoomEvent.new(|$ev) }); - Matrix::Response::Messages.new( + Matrix::Client::Response::Messages.new( start => $data<start>, end => $data<end>, messages => @messages @@ -116,7 +116,7 @@ method members(:$at, Str :$membership, Str :$not-membership --> Seq) { my %data = from-json($.get('/members', |%query).content); gather for %data<chunk>.List -> $ev { - take Matrix::Response::MemberEvent.new(|$ev) + take Matrix::Client::Response::MemberEvent.new(|$ev) } } |