I'm looking for suggestions how to best map XMLRPC request parameters into the params and arguments that my existing (web) controllers are expecting.
I have a number of controllers that I'd like to expose for web services. The C::P::Server::XMLRPC plugin makes this easy since one can add :XMLRPC to any existing controller to expose it. My controllers tend to be thin -- that is they don't fetch every bit of data that the View might display. Some of that work is left to the templates. So, for XMLRPC I also have a separate View that prepares any data needed for the response. This view is called instead for XMLRPC requests. Frankly, feels a bit dirty but I'm doing basically: sub process { my ( $self, $c ) = @_; my $method = $c->action->reverse; $method =~ s[/][_]g; $self->$method( $c ) if $self->can( $method ); } So, I can add a method to this view for any controller that needs extra help preparing the XMLRPC response. So, on to my question: The parameters and arguments that come in on web requests are different than they come in for XMLRPC requests -- so I need to "map" the arguments from the XMLRPC request into the arguments and parameters as the existing controllers expect. So, my question is *where* to do that? It's application-specific so seems like something that should happen in auto(). As above, there's the View system to prepare the response. Should I just cheat and abuse it on requests as well? That is: sub auto : Private { my ( $self, $c ) = @_; $c->forward( $c->view( 'XMLRPC::Input' ) ) if $c->is_xmlrcp; return 1; } And then that "view" would adjust the request arguments and parameters as needed. What approach is recommended to map (filter?) the request based on the action? -- Bill Moseley [EMAIL PROTECTED] _______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/[EMAIL PROTECTED]/ Dev site: http://dev.catalyst.perl.org/