]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Proxy.pm
changed return object key names for consistency
[Evergreen.git] / Open-ILS / src / perlmods / 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;