rpc-xml
rpc-xml copied to clipboard
Decompression not working with callback in request
#!/usr/bin/env perl
use 5.014;
use RPC::XML;
use RPC::XML::Client;
my $url = 'https://wordpress.com/xmlrpc.php';
my $client = RPC::XML::Client->new($url);
$client->request->accept_decodable;
print '"Accept-Encoding" set to ' . $client->request->header('Accept-Encoding') . "\n";
my $request = RPC::XML::request->new('wp.getPostTypes');
my $response = $client->send_request($request);
print "$response\n";
"Accept-Encoding" set to gzip, x-gzip, deflate, x-bzip2
not well-formed (invalid token) at line 1, column 0, byte 0: ?PMk1??+???ق??x ^ ? at /usr/share/perl5/RPC/XML/Client.pm line 402.
Everything works correctly in case request is fired w/o callback and response data are processed afterwards.
There are 2 issues with that:
- compression is not detected, so $data_in doesn't go to inflate(), but directly to parse_more()
- in case detection of compression is changed from $resp->content_encoding to $resp->{_headers}->{content-encoding} (I know - internal variable, I don't mind it for test), result of inflate() is empty string