diff options
author | ivan <ivan> | 2011-10-31 02:33:28 +0000 |
---|---|---|
committer | ivan <ivan> | 2011-10-31 02:33:28 +0000 |
commit | 588ac92d054671aa13cb61f76b5da472661cb1ac (patch) | |
tree | 5545fc810300409b70b16971f2ae49fd4b7d35ec /FS/FS | |
parent | 6e8323cf946ef3684a6846aa6afde7fe3692994e (diff) |
fix fallout from fixing UTF-8 XML-RPC self-service issues, RT#13656
Diffstat (limited to 'FS/FS')
-rw-r--r-- | FS/FS/ClientAPI_XMLRPC.pm | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/FS/FS/ClientAPI_XMLRPC.pm b/FS/FS/ClientAPI_XMLRPC.pm index 5d9196204..1940ca50e 100644 --- a/FS/FS/ClientAPI_XMLRPC.pm +++ b/FS/FS/ClientAPI_XMLRPC.pm @@ -30,11 +30,26 @@ L<FS::SelfService::XMLRPC>, L<FS::SelfService> use strict; use vars qw($DEBUG $AUTOLOAD); +use XMLRPC::Lite; # for XMLRPC::Data use FS::ClientAPI; $DEBUG = 0; $FS::ClientAPI::DEBUG = $DEBUG; +#false laziness w/FS::SelfService/XMLRPC.pm, same problem as below but worse +our %typefix = ( + 'invoice_pdf' => { 'invoice_pdf' => 'base64', }, + 'legacy_invoice_pdf' => { 'invoice_pdf' => 'base64', }, + 'skin_info' => { 'logo' => 'base64', + 'title_left_image' => 'base64', + 'title_right_image' => 'base64', + 'menu_top_image' => 'base64', + 'menu_body_image' => 'base64', + 'menu_bottom_image' => 'base64', + }, + 'invoice_logo' => { 'logo' => 'base64', }, +); + sub AUTOLOAD { my $call = $AUTOLOAD; $call =~ s/^FS::(SelfService::|ClientAPI_)XMLRPC:://; @@ -44,12 +59,27 @@ sub AUTOLOAD { my $autoload = &ss2clientapi; if (exists($autoload->{$call})) { + shift; #discard package name; + #$call = "FS::SelfService::$call"; #no strict 'refs'; #&{$call}(@_); #FS::ClientAPI->dispatch($autoload->{$call}, @_); - FS::ClientAPI->dispatch($autoload->{$call}, { @_ } ); + + my $return = FS::ClientAPI->dispatch($autoload->{$call}, { @_ } ); + + if ( exists($typefix{$call}) ) { + my $typefix = $typefix{$call}; + foreach my $field ( grep exists($return->{$_}), keys %$typefix ) { + my $type = $typefix->{$field}; + $return->{$field} = XMLRPC::Data->value($return->{$field}) + ->type($type); + } + } + + $return; + }else{ die "No such procedure: $call"; } |