aboutsummaryrefslogtreecommitdiff
path: root/lib/Matrix/Client
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Matrix/Client')
-rw-r--r--lib/Matrix/Client/MediaStore.rakumod49
1 files changed, 44 insertions, 5 deletions
diff --git a/lib/Matrix/Client/MediaStore.rakumod b/lib/Matrix/Client/MediaStore.rakumod
index cb59626..9779db2 100644
--- a/lib/Matrix/Client/MediaStore.rakumod
+++ b/lib/Matrix/Client/MediaStore.rakumod
@@ -48,16 +48,20 @@ method upload(IO::Path $path, Str $filename?, Str :$content-type is copy = "imag
}
#| GET - /_matrix/media/r0/download/{serverName}/{mediaId}
-multi method download(Str $mxc-uri, :$allow-remote = True) {
+multi method download(Str $mxc-uri, :$allow-remote = True, Str :$filename?) {
my $mxc = self.parse-mxc($mxc-uri);
- samewith($mxc<server-name>, $mxc<media-id>, :$allow-remote)
+ samewith($mxc<server-name>, $mxc<media-id>, :$allow-remote, :$filename)
}
-#| GET - /_matrix/media/r0/download/{serverName}/{mediaId}
-multi method download(Str $server-name, Str $media-id, Bool :$allow-remote = True) {
+#| GET - /_matrix/media/r0/download/{serverName}/{mediaId}/{fileName}
+multi method download(Str $server-name, Str $media-id,
+ Bool :$allow-remote = True, Str :$filename?) {
+ my $endpoint = "/download/{$server-name}/{$media-id}";
+
+ $endpoint ~= "/{$filename}" if $filename.defined;
my $response = $.get(
- "/download/{$server-name}/{$media-id}",
+ $endpoint,
allow_remote => $allow-remote.Str.lc
);
@@ -70,6 +74,41 @@ multi method download(Str $server-name, Str $media-id, Bool :$allow-remote = Tru
)
}
+#| GET - /_matrix/media/r0/thumbnail/{serverName}/{mediaId}
+multi method thumbnail(Str $mxc-uri, Int $width, Int $height,
+ Str :$method where * eq 'crop'|'scale',
+ Bool :$allow-remote = True) {
+ my $mxc = self.parse-mxc($mxc-uri);
+ samewith(
+ $mxc<server-name>, $mxc<media-id>,
+ $width, $height,
+ :$method, :$allow-remote
+ )
+}
+
+#| GET - /_matrix/media/r0/thumbnail/{serverName}/{mediaId}
+multi method thumbnail(Str $server-name, Str $media-id,
+ Int $width, Int $height,
+ Str :$method where * eq 'crop'|'scale',
+ Bool :$allow-remote = True) {
+ my $endpoint = "/thumbnail/{$server-name}/{$media-id}";
+
+ my $response = $.get(
+ $endpoint,
+ :$height,
+ :$width,
+ :$method,
+ allow_remote => $allow-remote.Str.lc
+ );
+
+ my %headers = $response.header.hash();
+
+ Matrix::Client::MediaStore::File.new(
+ content-type => %headers<Content-Type>.head,
+ content => $response.content
+ )
+}
+
#| GET - /_matrix/media/r0/config
method config(--> Matrix::Response::MediaStore::Config) {
my $response = $.get("/config");