@@ -1,5 +1,8 @@
Revision history for Perl extension Catalyst::Plugin::XMLRPC
+0.05 Sun Nov 20 00:00:00 2005
+ - Fixed bugs
+
0.04 Fri Nov 11 00:00:00 2005
- updated for Catalyst 5.5
@@ -1,7 +1,7 @@
# http://module-build.sourceforge.net/META-spec.html
#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
name: Catalyst-Plugin-XMLRPC
-version: 0.04
+version: 0.05
version_from: XMLRPC.pm
installdirs: site
requires:
@@ -5,8 +5,10 @@ use base 'Class::Data::Inheritable';
use attributes ();
use RPC::XML;
use RPC::XML::Parser;
+use Catalyst::Action;
+use Catalyst::Utils;
-our $VERSION = '0.04';
+our $VERSION = '0.05';
__PACKAGE__->mk_classdata('_xmlrpc_parser');
__PACKAGE__->_xmlrpc_parser( RPC::XML::Parser->new );
@@ -93,8 +95,18 @@ sub xmlrpc {
my @args = @{ $c->req->args };
$c->req->args( $req->{args} );
my $name = ref $class || $class;
- $c->actions->{reverse}->{$code} ||= "$name->$method";
- $c->state( $c->execute( $class, $code ) );
+ my $action = Catalyst::Action->new(
+ {
+ name => $method,
+ code => $code,
+ reverse => "-> $name->$method",
+ class => $name,
+ namespace => Catalyst::Utils::class2prefix(
+ $name, $c->config->{case_sensitive}
+ ),
+ }
+ );
+ $c->state( $c->execute( $class, $action ) );
$res = $c->state;
$c->req->args( \@args );
}
@@ -121,8 +133,10 @@ sub xmlrpc {
sub _deserialize_xmlrpc {
my $c = shift;
- my $p = $c->_xmlrpc_parser->parse;
- $p->parse_more( $c->req->body );
+ my $p = $c->_xmlrpc_parser->parse;
+ my $body = $c->req->body;
+ my $content = do { local $/; <$body> };
+ $p->parse_more($content);
my $req = $p->parse_done;
# Handle . in method name