aboutsummaryrefslogtreecommitdiff
path: root/lib/Matrix/Client/Requester.pm6
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Matrix/Client/Requester.pm6')
-rw-r--r--lib/Matrix/Client/Requester.pm626
1 files changed, 18 insertions, 8 deletions
diff --git a/lib/Matrix/Client/Requester.pm6 b/lib/Matrix/Client/Requester.pm6
index c2ba865..ec9a2d1 100644
--- a/lib/Matrix/Client/Requester.pm6
+++ b/lib/Matrix/Client/Requester.pm6
@@ -12,31 +12,41 @@ has $!url-prefix = "";
has $!access-token = "";
has $!sync-since = "";
-method get(Str $path, *%data) {
+method get(Str $path, :$media = False, *%data) {
my $q = "$path?access_token=$!access-token";
for %data.kv -> $k,$v {
$q ~= "&$k=$v" unless $v eq "";
}
- my $uri = uri_encode($.base-url ~ $q);
+ my $uri = uri_encode($.base-url($media) ~ $q);
$!ua.history = [];
$!ua.get($uri)
}
-method base-url(--> Str) {
- "$.home-server$!client-endpoint$!url-prefix"
+method base-url(Bool :$media? = False --> Str) {
+ if !$media {
+ "$.home-server$!client-endpoint$!url-prefix"
+ } else {
+ "$.home-server/_matrix/media/r0"
+ }
}
-multi method post(Str $path, Str $json) {
- my $req = HTTP::Request.new(POST => $.base-url() ~ $path ~ "?access_token=$!access-token",
+multi method post(Str $path, Str $json, :$media = False) {
+ my $req = HTTP::Request.new(POST => $.base-url(:$media) ~ $path ~ "?access_token=$!access-token",
Content-Type => 'application/json');
$req.add-content($json);
$!ua.history = [];
$!ua.request($req)
}
-multi method post(Str $path, *%params) {
- self.post($path, to-json(%params))
+method post-bin(Str $path, Buf $buf, :$content-type) {
+ my $req = POST($.base-url(:media) ~ $path ~ "?access_token=$!access-token", content => $buf, Content-Type => $content-type);
+ $!ua.history = [];
+ $!ua.request($req)
+}
+
+multi method post(Str $path, :$media = False, *%params) {
+ self.post($path, :$media, to-json(%params))
}
multi method put(Str $path,Str $json) {