2 use strict;use warnings;
4 use OpenSRF::Application;
5 use OpenILS::Utils::Fieldmapper;
13 my $method = $cgi->param('method');
14 my @params = $cgi->param('param');
17 print "Content-Type: text/plain\n\n";
18 print "usage: $url?method={method}¶m={param1}¶m={param2}...\n";
22 print "Content-Type: text/xml\n\n";
24 OpenSRF::System->bootstrap_client( config_file => '/pines/conf/bootstrap.conf' );
25 $method = OpenSRF::Application->method_lookup( $method );
27 my @resp = $method->run(@params);
31 Perl2REST(\$val, $_) for (@resp);
39 my $level = shift || 0;
41 $$val .= ' 'x$level . "<datum>$obj</datum>\n";
42 } elsif (ref($obj) eq 'ARRAY') {
43 my $next = $level + 1;
44 $$val .= ' 'x$level . "<array>\n";
45 Perl2REST($val, $_, $next) for (@$obj);
46 $$val .= ' 'x$level . "</array>\n";
47 } elsif (ref($obj) eq 'HASH') {
48 my $next = $level + 2;
49 $$val .= ' 'x$level . "<hash>\n";
50 for (sort keys %$obj) {
52 $$val .= ' 'x$level . " <key>$_</key>\n";
53 Perl2REST($val, $$obj{$_}, $next);
54 $$val .= ' 'x$level . " </pair>\n";
56 $$val .= ' 'x$level . "</hash>\n";
57 } elsif (UNIVERSAL::isa($obj, 'Fieldmapper')) {
58 my $class = ref($obj);
61 for ($obj->properties) {
64 my $next = $level + 2;
65 $$val .= ' 'x$level . "<$class>\n";
66 for (sort keys %hash) {
68 $$val .= ' 'x$level . " <$_>\n";
69 Perl2REST($val, $hash{$_}, $next);
70 $$val .= ' 'x$level . " </$_>\n";
72 $$val .= ' 'x$level . " <$_/>\n";
75 $$val .= ' 'x$level . "</$class>\n";
77 } elsif ($obj =~ /HASH/o) {
78 my $class = ref($obj);
80 $$val .= ' 'x$level . "<$class>\n";
81 my $next = $level + 1;
82 for (sort keys %$obj) {
84 Perl2REST($val, $$obj{$_}, $next);
85 $$val .= ' 'x$level . " </$_>\n";
87 $$val .= ' 'x$level . "</$class>\n";
88 } elsif ($obj =~ /ARRAY/o) {
89 my $class = ref($obj);
91 my $next = $level + 1;
92 $$val .= ' 'x$level . "<$class>\n";
93 Perl2REST($val, $_, $next) for (@$obj);
94 $$val .= ' 'x$level . "</$class>\n";
96 my $class = ref($obj);
98 $$val .= ' 'x$level . "<$class>$obj</$class>\n";