Change default group from 1 (daemon) to something more sensible: 100
[mspang/plceo2.git] / test_bookq.pl
1 #!/usr/bin/perl -Imodules
2
3 require BookQuery;
4
5 # function: GetISBNFromBarcode($barcode)
6 #           returns the ISBN corresponding to a book's barcode.
7 sub GetISBNFromBarcode($) {
8     (my $barcode) = @_;
9
10     my $checksum = 0;
11     for (my $i = 0; $i < 9; ++$i) {
12         $checksum += substr($barcode, $i + 3, 1) * ($i + 1);
13     }
14     $checksum %= 11;
15     if ($checksum == 10) { $checksum = "x"; }
16     my $isbn = substr($barcode, 3, 9) . $checksum;
17
18     return $isbn;
19 }
20
21
22 %session = &BookQuery::InitiateSession("z3950.loc.gov", 7090,
23                                        "VOYAGER");
24
25 my $isbn = <STDIN>;
26 chomp $isbn;
27
28 print "Looking for book $isbn\n";
29
30 if ($session{'success'}) {
31     print "Successful!\n";
32     print "Session ID " . $session{'id'} . "\n";
33     %bookinfo = &BookQuery::LookupBook(\%session, GetISBNFromBarcode($isbn));
34     if ($bookinfo{'success'}) {
35         print "Looked up book!\n";
36         foreach $key (keys %bookinfo) {
37             if ($key eq "content") { next; }
38             print $key . ": " . $bookinfo{$key} . "\n";
39         }
40     } else {
41         print "Error looking up book: " . $bookinfo{'error'} . "\n";
42     }
43 } else {
44     print "Unsuccessful: " . $session{'error'} . "\n";
45     print %session . "\n";
46 }
47
48 # $content = '<HTML>
49 # <HEAD>
50 # <TITLE>VOYAGER[1565921496[1,7,4,1]]</TITLE>
51 # </HEAD>
52 # <BODY bgcolor=#FFFFFF>
53 # <H1>Query Results</H1>
54 # <I>Records 1 through 1 of 1 returned.</I><HR><PRE>Author:        Wall, Larry.
55 # Title:         Programming Perl / Larry Wall, Tom Christiansen,
56 #                   and Randal L. Schwartz, with Stephen Potter.
57 # Edition:       2nd ed.
58 # Published:     Sebastopol, CA : O\'Reilly & Associates, c1996.
59 # Description:   xxi, 645 p. ; 23 cm.
60 # Series:        A Nutshell handbook
61 # LC Call No.:   QA76.73.P22W35 1996
62 # Dewey No.:     005.13/3 21
63 # ISBN:          1565921496
64 # Notes:         "Programming"--Cover.
65 #                Includes index.
66 #                An overview of Perl -- The gory details --
67 #                   Functions -- References and nested data structures --
68 #                   Packages, modules, and object classes -- Social engineering
69 #                   -- The standard Perl library -- Other oddments -- Diagnositic
70 #                   messages -- Glossary -- Index.
71 # Subjects:      Perl (Computer program language)
72 #                Programming Languages.
73 # Other authors: Schwartz, Randal L.
74 #                Christiansen, Tom.
75 # Control No.:   134169
76 # </PRE><A HREF="/cgi-bin/zgate?present+184152+Default+1+1+M+1.2.840.10003.5.10+1+/z3950/gateway.html">Tagged display</A>
77 # | <A HREF="/cgi-bin/zgate?present+184152+Default+1+1+B+1.2.840.10003.5.10+1+/z3950/gateway.html">Brief Record Display</A>
78 # | <A HREF="/cgi-bin/zgate?srchagain+184152+/prod/www/data/z3950/locils.html+1">New Search</A>
79 # <HR><P><I>This display was generated by the CNIDR Web-Z39.50 gateway, version 1.08, with Library of Congress Modifications.</I><P>
80 # </body>
81 # </html>
82 # ';
83
84 # if ($content =~ /\<PRE\>([^<]*)\<\/PRE\>/s) {
85 #     my $parsetext = $1;
86 #     print "Parse text: " . $parsetext . "\n";
87 #     print "=-=-=-=-=-\n";
88 #     while ($parsetext =~ s/^([^:\n]+): ([^\n]*)\n(( [^\n]*\n)*)//ms) {
89 #         $section = $1;
90 #         $value = $2 . $3;
91 #         chomp $value;
92 #         $value =~ s/  */ /msg;
93 #         $value =~ s/^ //mg;
94 #         print "Parsed: $section = $value\n";
95 #     }
96 # }
97