X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FClientAPI_XMLRPC.pm;h=50b205687b613ff02a85d11c1cddadd20082b702;hp=cfaf009c736ebabf156e9e5be8c2ab1f5080f413;hb=3564f619654c5cbf22fc2acbe7eff0c08308e859;hpb=3706609762d9cec964f337e74829031b895ddbac diff --git a/FS/FS/ClientAPI_XMLRPC.pm b/FS/FS/ClientAPI_XMLRPC.pm index cfaf009c7..50b205687 100644 --- a/FS/FS/ClientAPI_XMLRPC.pm +++ b/FS/FS/ClientAPI_XMLRPC.pm @@ -30,11 +30,30 @@ L, L 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_skin_info = ( + 'logo' => 'base64', + 'title_left_image' => 'base64', + 'title_right_image' => 'base64', + 'menu_top_image' => 'base64', + 'menu_body_image' => 'base64', + 'menu_bottom_image' => 'base64', +); +our %typefix = ( + 'invoice_pdf' => { 'invoice_pdf' => 'base64', }, + 'legacy_invoice_pdf' => { 'invoice_pdf' => 'base64', }, + 'skin_info' => \%typefix_skin_info, + 'login_info' => \%typefix_skin_info, + 'invoice_logo' => { 'logo' => 'base64', }, + 'login_banner_image' => { 'image' => 'base64', }, +); + sub AUTOLOAD { my $call = $AUTOLOAD; $call =~ s/^FS::(SelfService::|ClientAPI_)XMLRPC:://; @@ -44,12 +63,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"; } @@ -64,17 +98,26 @@ sub ss2clientapi { 'chfn' => 'passwd/passwd', 'chsh' => 'passwd/passwd', 'login_info' => 'MyAccount/login_info', + 'login_banner_image' => 'MyAccount/login_banner_image', 'login' => 'MyAccount/login', 'logout' => 'MyAccount/logout', + 'switch_acct' => 'MyAccount/switch_acct', 'customer_info' => 'MyAccount/customer_info', + 'customer_info_short' => 'MyAccount/customer_info_short', + 'billing_history' => 'MyAccount/billing_history', 'edit_info' => 'MyAccount/edit_info', #add to ss cgi! 'invoice' => 'MyAccount/invoice', + 'invoice_pdf' => 'MyAccount/invoice_pdf', + 'legacy_invoice' => 'MyAccount/legacy_invoice', + 'legacy_invoice_pdf' => 'MyAccount/legacy_invoice_pdf', 'invoice_logo' => 'MyAccount/invoice_logo', 'list_invoices' => 'MyAccount/list_invoices', #? 'cancel' => 'MyAccount/cancel', #add to ss cgi! 'payment_info' => 'MyAccount/payment_info', 'payment_info_renew_info' => 'MyAccount/payment_info_renew_info', 'process_payment' => 'MyAccount/process_payment', + 'store_payment' => 'MyAccount/store_payment', + 'process_stored_payment' => 'MyAccount/process_stored_payment', 'process_payment_order_pkg' => 'MyAccount/process_payment_order_pkg', 'process_payment_change_pkg' => 'MyAccount/process_payment_change_pkg', 'process_payment_order_renew' => 'MyAccount/process_payment_order_renew', @@ -83,6 +126,19 @@ sub ss2clientapi { 'list_pkgs' => 'MyAccount/list_pkgs', #add to ss (added?) 'list_svcs' => 'MyAccount/list_svcs', #add to ss (added?) 'list_svc_usage' => 'MyAccount/list_svc_usage', + 'svc_status_html' => 'MyAccount/svc_status_html', + 'svc_status_hash' => 'MyAccount/svc_status_hash', + 'set_svc_status_hash' => 'MyAccount/set_svc_status_hash', + 'set_svc_status_listadd' => 'MyAccount/set_svc_status_listadd', + 'set_svc_status_listdel' => 'MyAccount/set_svc_status_listdel', + 'set_svc_status_vacationadd'=> 'MyAccount/set_svc_status_vacationadd', + 'set_svc_status_vacationdel'=> 'MyAccount/set_svc_status_vacationdel', + 'acct_forward_info' => 'MyAccount/acct_forward_info', + 'process_acct_forward' => 'MyAccount/process_acct_forward', + 'list_dsl_devices' => 'MyAccount/list_dsl_devices', + 'add_dsl_device' => 'MyAccount/add_dsl_device', + 'delete_dsl_device' => 'MyAccount/delete_dsl_device', + 'port_graph' => 'MyAccount/port_graph', 'list_cdr_usage' => 'MyAccount/list_cdr_usage', 'list_support_usage' => 'MyAccount/list_support_usage', 'order_pkg' => 'MyAccount/order_pkg', #add to ss cgi! @@ -91,42 +147,41 @@ sub ss2clientapi { 'renew_info' => 'MyAccount/renew_info', 'order_renew' => 'MyAccount/order_renew', 'cancel_pkg' => 'MyAccount/cancel_pkg', #add to ss cgi! + 'suspend_pkg' => 'MyAccount/suspend_pkg', #add to ss cgi! 'charge' => 'MyAccount/charge', #? 'part_svc_info' => 'MyAccount/part_svc_info', 'provision_acct' => 'MyAccount/provision_acct', + 'provision_phone' => 'MyAccount/provision_phone', 'provision_external' => 'MyAccount/provision_external', 'unprovision_svc' => 'MyAccount/unprovision_svc', 'myaccount_passwd' => 'MyAccount/myaccount_passwd', + 'reset_passwd' => 'MyAccount/reset_passwd', + 'check_reset_passwd' => 'MyAccount/check_reset_passwd', + 'process_reset_passwd' => 'MyAccount/process_reset_passwd', + 'list_tickets' => 'MyAccount/list_tickets', 'create_ticket' => 'MyAccount/create_ticket', + 'get_ticket' => 'MyAccount/get_ticket', + 'adjust_ticket_priority' => 'MyAccount/adjust_ticket_priority', + 'did_report' => 'MyAccount/did_report', 'signup_info' => 'Signup/signup_info', 'skin_info' => 'MyAccount/skin_info', 'access_info' => 'MyAccount/access_info', 'domain_select_hash' => 'Signup/domain_select_hash', # expose? 'new_customer' => 'Signup/new_customer', 'capture_payment' => 'Signup/capture_payment', + 'clear_signup_cache' => 'Signup/clear_cache', + 'new_agent' => 'Agent/new_agent', 'agent_login' => 'Agent/agent_login', 'agent_logout' => 'Agent/agent_logout', 'agent_info' => 'Agent/agent_info', 'agent_list_customers' => 'Agent/agent_list_customers', + 'check_username' => 'Agent/check_username', + 'suspend_username' => 'Agent/suspend_username', + 'unsuspend_username' => 'Agent/unsuspend_username', 'mason_comp' => 'MasonComponent/mason_comp', 'call_time' => 'PrepaidPhone/call_time', 'call_time_nanpa' => 'PrepaidPhone/call_time_nanpa', 'phonenum_balance' => 'PrepaidPhone/phonenum_balance', - 'bulk_processrow' => 'Bulk/processrow', - 'check_username' => 'Bulk/check_username', - #sg - 'ping' => 'SGNG/ping', - 'decompify_pkgs' => 'SGNG/decompify_pkgs', - 'previous_payment_info' => 'SGNG/previous_payment_info', - 'previous_payment_info_renew_info' - => 'SGNG/previous_payment_info_renew_info', - 'previous_process_payment' => 'SGNG/previous_process_payment', - 'previous_process_payment_order_pkg' - => 'SGNG/previous_process_payment_order_pkg', - 'previous_process_payment_change_pkg' - => 'SGNG/previous_process_payment_change_pkg', - 'previous_process_payment_order_renew' - => 'SGNG/previous_process_payment_order_renew', }; }