1 package OpenILS::WWW::Method;
2 use strict; use warnings;
6 use Apache::Const -compile => qw(OK REDIRECT :log);
7 use APR::Const -compile => qw(:error SUCCESS);
8 use Apache::RequestRec ();
9 use Apache::RequestIO ();
10 use Apache::RequestUtil;
16 use OpenSRF::EX qw(:try);
21 use constant MAX_SESSION_REQUESTS => 20;
26 my $cgi = CGI->new( $apache );
28 my $method = $cgi->param("method");
29 my $service = $cgi->param("service");
31 my @a = $cgi->param();
36 if(defined($cgi->param("__param"))) {
37 for my $param ( $cgi->param("__param")) {
38 push( @param_array, JSON->JSON2perl( $param ));
41 for my $param ($cgi->param()) {
42 $param_hash{$param} = $cgi->param($param)
43 unless( $param eq "method" or $param eq "service" );
47 print "Content-type: text/plain; charset=utf-8\n\n";
50 perform_method($service, $method, @param_array);
52 perform_method($service, $method, %param_hash);
56 warn JSON->perl2JSON( \@param_array );
57 warn "===============\n";
58 warn Dumper \@param_array;
63 sub child_init_handler {
64 OpenSRF::System->bootstrap_client(
65 config_file => "/pines/conf/bootstrap.conf" );
71 my ($service, $method, @params) = @_;
73 warn "performing method $method for service $service with params @params\n";
77 if($session_hash{$service} ) {
79 $session = $session_hash{$service};
80 $session->{web_count} += 1;
82 if( $session->{web_count} > MAX_SESSION_REQUESTS) {
83 $session->disconnect();
84 $session->{web_count} = 1;
89 $session = OpenSRF::AppSession->create($service);
90 $session_hash{$service} = $session;
91 $session->{web_count} = 1;
95 my $request = $session->request( $method, @params );
98 while( my $response = $request->recv(20) ) {
100 if( UNIVERSAL::isa( $response, "Error" )) {
101 warn "Received exception: " . $response->stringify . "\n";
102 print JSON->perl2JSON($response->stringify);
107 my $content = $response->content;
108 push @results, $content;
112 if(!$request->complete) {
113 warn "<b>ERROR Completing Request</b>";
114 print JSON->perl2JSON("<b>ERROR Completing Request</b>");
122 print JSON->perl2JSON( \@results );