delete fees, RT#81713
[freeside.git] / FS / bin / freeside-selfservice-xmlrpcd
1 #!/usr/bin/perl
2
3 use FS::Daemon::Preforking qw( freeside_init1 freeside_init2 daemon_run );
4
5 use FS::XMLRPC_Lite; #XMLRPC::Lite for XMLRPC::Serializer
6                      #and XMLRPC::Transport::HTTP
7 use FS::Conf;
8 use FS::ClientAPI qw( load_clientapi_modules );
9 use FS::ClientAPI_XMLRPC; #FS::SelfService::XMLRPC;
10
11 #freeside xmlrpc.cgi
12 my %typelookup = (
13 #not utf-8 safe#  base64 => [10, sub {$_[0] =~ /[^\x09\x0a\x0d\x20-\x7f]/}, 'as_base64'],
14   dateTime => [35, sub {$_[0] =~ /^\d{8}T\d\d:\d\d:\d\d$/}, 'as_dateTime'],
15   string   => [40, sub {1}, 'as_string'],
16 );
17
18 use constant ME => 'selfservice-xmlrpcd';
19
20 freeside_init1(ME);
21
22 load_clientapi_modules;
23
24 freeside_init2(ME);
25
26 FS::ClientAPI::Signup::clear_cache();
27
28 my $conf = new FS::Conf;
29 die "not running; selfservice-xmlrpc conf option is off\n"
30   unless $conf->exists('selfservice-xmlrpc');
31
32 daemon_run( 'port' => 8080, 'handle_request' =>
33   sub {
34     my $request = shift;
35
36     my $serializer = new XMLRPC::Serializer(typelookup => \%typelookup);
37
38     #my $soap = SOAP::Transport::HTTP::Server
39     my $soap = XMLRPC::Transport::HTTP::Server
40                -> new
41                -> dispatch_to('FS::ClientAPI_XMLRPC')
42                -> serializer($serializer);
43
44     $soap->request($request);
45     $soap->handle;
46
47     $FS::UID::dbh->commit() if $FS::UID::dbh; #XXX handle commit error
48
49     return $soap->response;
50   }
51 );
52
53 1;