1 package FS::ClientAPI_XMLRPC;
5 FS::ClientAPI_XMLRPC - Freeside XMLRPC accessible self-service API, on the backend
9 This module implements the self-service API offered by xmlrpc.cgi and friends,
10 but on a backend machine.
14 Use this API to implement your own client "self-service" module vi XMLRPC.
16 Each routine described in L<FS::SelfService> is available vi XMLRPC as the
17 method FS.SelfService.XMLRPC.B<method>. All values are passed to the
18 selfservice-server in a struct of strings. The return values are in a
19 struct as strings, arrays, or structs as appropriate for the values
20 described in L<FS::SelfService>.
26 L<FS::SelfService::XMLRPC>, L<FS::SelfService>
32 use vars qw($DEBUG $AUTOLOAD);
36 $FS::ClientAPI::DEBUG = $DEBUG;
40 $call =~ s/^FS::(SelfService::|ClientAPI_)XMLRPC:://;
42 warn "FS::ClientAPI_XMLRPC::AUTOLOAD $call\n" if $DEBUG;
44 my $autoload = &ss2clientapi;
46 if (exists($autoload->{$call})) {
47 shift; #discard package name;
48 #$call = "FS::SelfService::$call";
51 #FS::ClientAPI->dispatch($autoload->{$call}, @_);
52 FS::ClientAPI->dispatch($autoload->{$call}, @_ );
54 die "No such procedure: $call";
58 #terrible false laziness w/SelfService.pm
59 # - fix at build time, by including some file in both selfserv and backend libs?
60 # - or fix at runtime, by having selfservice client ask server for the list?
63 'passwd' => 'passwd/passwd',
64 'chfn' => 'passwd/passwd',
65 'chsh' => 'passwd/passwd',
66 'login_info' => 'MyAccount/login_info',
67 'login' => 'MyAccount/login',
68 'logout' => 'MyAccount/logout',
69 'customer_info' => 'MyAccount/customer_info',
70 'edit_info' => 'MyAccount/edit_info', #add to ss cgi!
71 'invoice' => 'MyAccount/invoice',
72 'invoice_logo' => 'MyAccount/invoice_logo',
73 'list_invoices' => 'MyAccount/list_invoices', #?
74 'cancel' => 'MyAccount/cancel', #add to ss cgi!
75 'payment_info' => 'MyAccount/payment_info',
76 'payment_info_renew_info' => 'MyAccount/payment_info_renew_info',
77 'process_payment' => 'MyAccount/process_payment',
78 'process_payment_order_pkg' => 'MyAccount/process_payment_order_pkg',
79 'process_payment_change_pkg' => 'MyAccount/process_payment_change_pkg',
80 'process_payment_order_renew' => 'MyAccount/process_payment_order_renew',
81 'process_prepay' => 'MyAccount/process_prepay',
82 'realtime_collect' => 'MyAccount/realtime_collect',
83 'list_pkgs' => 'MyAccount/list_pkgs', #add to ss (added?)
84 'list_svcs' => 'MyAccount/list_svcs', #add to ss (added?)
85 'list_svc_usage' => 'MyAccount/list_svc_usage',
86 'list_cdr_usage' => 'MyAccount/list_cdr_usage',
87 'list_support_usage' => 'MyAccount/list_support_usage',
88 'order_pkg' => 'MyAccount/order_pkg', #add to ss cgi!
89 'change_pkg' => 'MyAccount/change_pkg',
90 'order_recharge' => 'MyAccount/order_recharge',
91 'renew_info' => 'MyAccount/renew_info',
92 'order_renew' => 'MyAccount/order_renew',
93 'cancel_pkg' => 'MyAccount/cancel_pkg', #add to ss cgi!
94 'charge' => 'MyAccount/charge', #?
95 'part_svc_info' => 'MyAccount/part_svc_info',
96 'provision_acct' => 'MyAccount/provision_acct',
97 'provision_external' => 'MyAccount/provision_external',
98 'unprovision_svc' => 'MyAccount/unprovision_svc',
99 'myaccount_passwd' => 'MyAccount/myaccount_passwd',
100 'create_ticket' => 'MyAccount/create_ticket',
101 'signup_info' => 'Signup/signup_info',
102 'skin_info' => 'MyAccount/skin_info',
103 'access_info' => 'MyAccount/access_info',
104 'domain_select_hash' => 'Signup/domain_select_hash', # expose?
105 'new_customer' => 'Signup/new_customer',
106 'capture_payment' => 'Signup/capture_payment',
107 'clear_signup_cache' => 'Signup/clear_cache',
108 'agent_login' => 'Agent/agent_login',
109 'agent_logout' => 'Agent/agent_logout',
110 'agent_info' => 'Agent/agent_info',
111 'agent_list_customers' => 'Agent/agent_list_customers',
112 'mason_comp' => 'MasonComponent/mason_comp',
113 'call_time' => 'PrepaidPhone/call_time',
114 'call_time_nanpa' => 'PrepaidPhone/call_time_nanpa',
115 'phonenum_balance' => 'PrepaidPhone/phonenum_balance',
116 'bulk_processrow' => 'Bulk/processrow',
117 'check_username' => 'Bulk/check_username',
119 'ping' => 'SGNG/ping',
120 'decompify_pkgs' => 'SGNG/decompify_pkgs',
121 'previous_payment_info' => 'SGNG/previous_payment_info',
122 'previous_payment_info_renew_info'
123 => 'SGNG/previous_payment_info_renew_info',
124 'previous_process_payment' => 'SGNG/previous_process_payment',
125 'previous_process_payment_order_pkg'
126 => 'SGNG/previous_process_payment_order_pkg',
127 'previous_process_payment_change_pkg'
128 => 'SGNG/previous_process_payment_change_pkg',
129 'previous_process_payment_order_renew'
130 => 'SGNG/previous_process_payment_order_renew',
135 #XXX submit patch to SOAP::Lite
137 use XMLRPC::Transport::HTTP;
139 package XMLRPC::Transport::HTTP::Server;
141 @XMLRPC::Transport::HTTP::Server::ISA = qw(SOAP::Transport::HTTP::Server);
143 sub initialize; *initialize = \&XMLRPC::Server::initialize;
144 sub make_fault; *make_fault = \&XMLRPC::Transport::HTTP::CGI::make_fault;
145 sub make_response; *make_response = \&XMLRPC::Transport::HTTP::CGI::make_response;