breaking up unapi and supercat rest interfaces; adding oisbn
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 23 Feb 2006 03:26:09 +0000 (03:26 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 23 Feb 2006 03:26:09 +0000 (03:26 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@3175 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/WWW/SuperCat.pm

index eee3beb..2fdd5f0 100644 (file)
@@ -33,107 +33,180 @@ sub child_init {
        $supercat = OpenSRF::AppSession->create('open-ils.supercat');
 }
 
        $supercat = OpenSRF::AppSession->create('open-ils.supercat');
 }
 
-sub handler {
+sub oisbn {
 
        my $apache = shift;
        return Apache2::Const::DECLINED if (-e $apache->filename);
 
 
        my $apache = shift;
        return Apache2::Const::DECLINED if (-e $apache->filename);
 
-       my $path = $apache->path_info;
+       (my $isbn = $apache->path_info) =~ s{^.*?([^/]+)$}{$1}o;
 
 
-       my ($id,$type,$format,$command) = reverse split '/', $path;
+       my $list = $supercat
+               ->request("open-ils.supercat.oisbn", $isbn)
+               ->gather(1);
 
 
-       print "Content-type: application/xml; charset=utf-8\n";
-       
-       if ( $path =~ m{^/?$}o ) {
-               my $cgi = new CGI;
+       print "Content-type: application/xml; charset=utf-8\n\n";
+       print "<?xml version='1.0' encoding='UTF-8' ?>\n";
 
 
-               my $uri = $cgi->param('uri') || '';
-               my $base = $cgi->url;
+       unless (exists $$list{metarecord}) {
+               print '<idlist/>';
+               return Apache2::Const::OK;
+       }
 
 
-               $format = $cgi->param('format');
-               ($id,$type) = ('','');
+       print "<idlist metarecord='$$list{metarecord}'>\n";
 
 
-               if (!$format) {
-                       if ($uri =~ m{^info:oils/([^\/]+)/(\d+)}o) {
-                               $id = $2;
-                               $type = 'record';
-                               $type = 'metarecord' if ($1 =~ /^m/o);
+       for ( keys %{ $$list{record_list} } ) {
+               (my $o = $$list{record_list}{$_}) =~s/^(\S+).*?$/$1/o;
+               print "  <isbn record='$_'>$o</isbn>\n"
+       }
 
 
-                               my $list = $supercat
-                                       ->request("open-ils.supercat.$type.formats")
-                                       ->gather(1);
+       print "</idlist>";
 
 
-                               print "\n";
-
-                               my $body =
-                                       "<formats>
-                                        <uri>$uri</uri>
-                                          <format>
-                                            <name>opac</name>
-                                            <type>text/html</type>
-                                          </format>".
-
-                                       join('',
-                                               map { "  <format>
-                                                          <name>$_</name>
-                                                          <type>application/xml</type>
-                                                        </format>" 
-                                               } @$list
-                                       ).
-                                       
-                                       '</formats>';
-
-                               $apache->custom_response( 300, $body);
-                               return 300;
-                       } else {
-                               my $list = $supercat
-                                       ->request("open-ils.supercat.record.formats")
-                                       ->gather(1);
-                               push @$list,
-                                       @{ $supercat
-                                               ->request("open-ils.supercat.metarecord.formats")
-                                               ->gather(1);
-                                       };
-
-                               my %hash = map { ($_ => $_) } @$list;
-                               $list = [ sort keys %hash ];
-
-                               print "\n<formats>
-                                          <format>
-                                            <name>opac</name>
-                                            <type>text/html</type>
-                                          </format>".
-                                       join('',
-                                               map { 
-                                                       "<format><name>$_</name><type>text/xml</type></format>" 
-                                               } @$list
-                                       ).'</formats>';
-                               return Apache2::Const::OK;
-                       }
-               }
+       return Apache2::Const::OK;
+}
 
 
-               
+sub unapi {
+
+       my $apache = shift;
+       return Apache2::Const::DECLINED if (-e $apache->filename);
+
+       print "Content-type: application/xml; charset=utf-8\n";
+       
+       my $cgi = new CGI;
+
+       my $uri = $cgi->param('uri') || '';
+       my $base = $cgi->url;
+
+       my $format = $cgi->param('format');
+       my ($id,$type,$command) = ('','','');
+
+       if (!$format) {
                if ($uri =~ m{^info:oils/([^\/]+)/(\d+)}o) {
                        $id = $2;
                        $type = 'record';
                        $type = 'metarecord' if ($1 =~ /^m/o);
                if ($uri =~ m{^info:oils/([^\/]+)/(\d+)}o) {
                        $id = $2;
                        $type = 'record';
                        $type = 'metarecord' if ($1 =~ /^m/o);
-                       $command = 'retrieve';
+
+                       my $list = $supercat
+                       ->request("open-ils.supercat.$type.formats")
+                               ->gather(1);
+
+                       print "\n";
+
+                       my $body =
+                               "<formats>
+                                <uri>$uri</uri>
+                                  <format>
+                                    <name>opac</name>
+                                    <type>text/html</type>
+                                  </format>".
+
+                               join('',
+                                       map { "  <format>
+                                                  <name>$_</name>
+                                                  <type>application/xml</type>
+                                        </format>" 
+                                       } @$list
+                               ).
+                               
+                               '</formats>';
+
+               $apache->custom_response( 300, $body);
+                       return 300;
+               } else {
+                       my $list = $supercat
+                               ->request("open-ils.supercat.record.formats")
+                               ->gather(1);
+                               
+                       push @$list,
+                               @{ $supercat
+                                       ->request("open-ils.supercat.metarecord.formats")
+                                       ->gather(1);
+                               };
+
+                       my %hash = map { ($_ => $_) } @$list;
+                       $list = [ sort keys %hash ];
+
+                       print "\n<formats>
+                                  <format>
+                                    <name>opac</name>
+                                    <type>text/html</type>
+                                  </format>".
+                               join('',
+                                       map { 
+                                               "<format><name>$_</name><type>text/xml</type></format>" 
+                                       } @$list
+                               ).'</formats>';
+                       return Apache2::Const::OK;
                }
                }
+       }
+
+               
+       if ($uri =~ m{^info:oils/([^\/]+)/(\d+)}o) {
+               $id = $2;
+               $type = 'record';
+               $type = 'metarecord' if ($1 =~ /^m/o);
+               $command = 'retrieve';
+       }
+
+       if ($format eq 'opac') {
+               print "Location: $base/../../en-US/skin/default/xml/rresult.xml?m=$id\n\n"
+                       if ($type eq 'metarecord');
+               print "Location: $base/../../en-US/skin/default/xml/rdetail.xml?r=$id\n\n"
+                       if ($type eq 'record');
+               return 302;
+       }
+
+       print "\n" . $supercat->request("open-ils.supercat.$type.$format.$command",$id)->gather(1);
+
+       return Apache2::Const::OK;
+}
 
 
-               if ($format eq 'opac') {
-                       print "Location: $base/../../en-US/skin/default/xml/rresult.xml?m=$id\n\n"
-                               if ($type eq 'metarecord');
-                       print "Location: $base/../../en-US/skin/default/xml/rdetail.xml?r=$id\n\n"
-                               if ($type eq 'record');
-                       return 302;
+sub supercat {
+
+       my $apache = shift;
+       return Apache2::Const::DECLINED if (-e $apache->filename);
+
+       my $path = $apache->path_info;
+
+       my ($id,$type,$format,$command) = reverse split '/', $path;
+
+       print "Content-type: application/xml; charset=utf-8\n";
+       
+       if ( $path =~ m{^/formats(?:/([^\/]+))?$}o ) {
+               if ($1) {
+                       my $list = $supercat
+                               ->request("open-ils.supercat.$1.formats")
+                               ->gather(1);
+
+                       print "\n<formats>
+                                  <name>opac</name>
+                                  <type>text/html</type>".
+                               join('',
+                                       map { 
+                                               "<format><name>$_</name><type>text/xml</type></format>" 
+                                       } @$list
+                               ).'</formats>';
+
+                       return Apache2::Const::OK;
                }
 
                }
 
-       } elsif ( $path =~ m{^/formats/([^\/]+)$}o ) {
                my $list = $supercat
                my $list = $supercat
-                       ->request("open-ils.supercat.$1.formats")
+                       ->request("open-ils.supercat.record.formats")
                        ->gather(1);
                        ->gather(1);
-
-               print "\n<formats>".
+                               
+               push @$list,
+                       @{ $supercat
+                               ->request("open-ils.supercat.metarecord.formats")
+                               ->gather(1);
+                       };
+
+               my %hash = map { ($_ => $_) } @$list;
+               $list = [ sort keys %hash ];
+
+               print "\n<formats>
+                          <format>
+                            <name>opac</name>
+                            <type>text/html</type>
+                          </format>".
                        join('',
                                map { 
                                        "<format><name>$_</name><type>text/xml</type></format>" 
                        join('',
                                map { 
                                        "<format><name>$_</name><type>text/xml</type></format>"