diff options
author | dakkar <dakkar@thenautilus.net> | 2021-11-28 15:21:34 +0000 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2021-11-28 15:21:34 +0000 |
commit | 10f2744658eeb4ccbf0342d707c08ecfb9623b91 (patch) | |
tree | c4933340cc82e6536bccf5622bc6873855a20d23 /lib/Cro | |
parent | very rought start (diff) | |
download | media-control-10f2744658eeb4ccbf0342d707c08ecfb9623b91.tar.gz media-control-10f2744658eeb4ccbf0342d707c08ecfb9623b91.tar.bz2 media-control-10f2744658eeb4ccbf0342d707c08ecfb9623b91.zip |
move stuff around, add lirc client
Diffstat (limited to 'lib/Cro')
-rw-r--r-- | lib/Cro/BodyParser/VlcXML.rakumod | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/Cro/BodyParser/VlcXML.rakumod b/lib/Cro/BodyParser/VlcXML.rakumod new file mode 100644 index 0000000..0750c9a --- /dev/null +++ b/lib/Cro/BodyParser/VlcXML.rakumod @@ -0,0 +1,38 @@ +use v6.d; +use Cro::BodyParser; +use Cro::HTTP::Message; +use XML; + +class Cro::BodyParser::VlcXML does Cro::BodyParser { + method is-applicable(Cro::HTTP::Message $message --> Bool) { + with $message.content-type { + .type eq 'application'|'text' && .subtype eq 'xml' || .suffix eq 'json' + } + else { + False + } + } + + method parse(Cro::HTTP::Message $message --> Promise) { + Promise( + supply { + my $payload = Blob.new; + + whenever $message.body-byte-stream -> $blob { + $payload ~= $blob; + LAST emit from-xml($payload.decode('utf-8')); + } + + # if we had LibXML + + # my LibXML::PushParser $parser .= new(); + # + # whenever $message.body-byte-stream -> $blob { + # $parser.push($blob); + # $payload ~= $blob; + # LAST emit $parser.finish-push; + # } + } + ) + } +} |