]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/perlmods/lib/OpenILS/Application/Proxy.pm
LP#1552778: copy some date/time utils from OpenSRF
[working/Evergreen.git] / Open-ILS / src / perlmods / lib / OpenILS / Application / Proxy.pm
1 package OpenILS::Application::Proxy;
2 use strict; use warnings;
3 use OpenILS::Application;
4 use base qw/OpenILS::Application/;
5 use OpenSRF::EX qw(:try);
6
7
8 __PACKAGE__->register_method(
9     method  => "proxy",
10     api_name    => "open-ils.proxy.proxy",
11     stream  => 1,
12 );
13
14
15 sub proxy {
16     my($self, $client, $user_session, 
17             $server, $method, @params) = @_;
18
19     warn "$user_session - $server - $method\n";
20
21     throw OpenSRF::EX::ERROR ("Not enough args to proxy")
22         unless ($user_session and $server and $method);
23
24
25     my $session = OpenSRF::AppSession->create($server);
26     my $request = $session->request( $method, @params );
27     if(!$request) {
28         throw OpenSRF::EX::ERROR 
29             ("No request built on call to session->request( $method, @params )");
30     }
31     
32     $request->wait_complete;
33
34     if( $request->failed() ) { 
35
36         throw OpenSRF::EX::ERROR
37             ($request->failed()->stringify());
38
39     } else {
40
41         while( my $response = $request->recv ) {
42             $client->respond( $response->content );
43         }
44     }
45
46     $request->finish();
47     $session->finish();
48     $session->disconnect();
49
50     return undef;
51 }
52
53 1;