New
authormike <mike>
Thu, 13 Oct 2005 13:11:17 +0000 (13:11 +0000)
committermike <mike>
Thu, 13 Oct 2005 13:11:17 +0000 (13:11 +0000)
lib/Net/Z3950.pm [new file with mode: 0644]

diff --git a/lib/Net/Z3950.pm b/lib/Net/Z3950.pm
new file mode 100644 (file)
index 0000000..503dacf
--- /dev/null
@@ -0,0 +1,196 @@
+# $Id: Z3950.pm,v 1.1 2005-10-13 13:11:17 mike Exp $
+
+use strict;
+use warnings;
+use Net::Z3950::ZOOM;
+
+
+# Member naming convention is the same as in ../ZOOM.pm
+
+# ----------------------------------------------------------------------------
+# Enumerations are copied from the old Net::Z3950 module.
+# It's not entirely clear yet which of these we actually need, for for
+# now I am commenting them all out, and faulting in the ones we need.
+# ----------------------------------------------------------------------------
+
+# Define the operation-code enumeration.  The values here are chosen
+# to be in a distinctive range (i.e. 3950 plus a small integer) so
+# that if they are misused in another context, they're easy to spot.
+package Net::Z3950::Op;
+sub Error    { 3951 }
+sub Init     { 3952 }
+sub Search   { 3953 }
+sub Get      { 3954 }
+sub DeleteRS { 3955 }
+sub Scan     { 3956 }
+package Net::Z3950;
+
+
+## Define the record-syntax enumeration.  These values must be kept
+## synchronised with the values implied by the oid_value enumeration in
+## the header file "yaz/oid.h"
+#package Net::Z3950::RecordSyntax;
+#sub UNIMARC    { 16 }
+#sub INTERMARC  { 17 }
+#sub CCF        { 18 }
+#sub USMARC     { 19 }
+#sub UKMARC     { 20 }
+#sub NORMARC    { 21 }
+#sub LIBRISMARC { 22 }
+#sub DANMARC    { 23 }
+#sub FINMARC    { 24 }
+#sub MAB        { 25 }
+#sub CANMARC    { 26 }
+#sub SBN        { 27 }
+#sub PICAMARC   { 28 }
+#sub AUSMARC    { 29 }
+#sub IBERMARC   { 30 }
+#sub CATMARC    { 31 }
+#sub MALMARC    { 32 }
+#sub EXPLAIN    { 33 }
+#sub SUTRS      { 34 }
+#sub OPAC       { 35 }
+#sub SUMMARY    { 36 }
+#sub GRS0       { 37 }
+#sub GRS1       { 38 }
+#sub EXTENDED   { 39 }
+#sub TEXT_HTML  { 70 }
+#sub XML        { 80 }
+#sub TEXT_XML   { 80 }
+#sub APPLICATION_XML { 81 }
+#
+#use vars '%map';
+## Maps record-syntax name strings to enumeration members
+#%map = (UNIMARC => UNIMARC,
+#      INTERMARC => INTERMARC,
+#      CCF => CCF,
+#      USMARC => USMARC,
+#      UKMARC => UKMARC,
+#      NORMARC => NORMARC,
+#      LIBRISMARC => LIBRISMARC,
+#      DANMARC => DANMARC,
+#      FINMARC => FINMARC,
+#      MAB => MAB,
+#      CANMARC => CANMARC,
+#      SBN => SBN,
+#      PICAMARC => PICAMARC,
+#      AUSMARC => AUSMARC,
+#      IBERMARC => IBERMARC,
+#      CATMARC => CATMARC,
+#      MALMARC => MALMARC,
+#      EXPLAIN => EXPLAIN,
+#      SUTRS => SUTRS,
+#      OPAC => OPAC,
+#      SUMMARY => SUMMARY,
+#      GRS0 => GRS0,
+#      GRS1 => GRS1,
+#      EXTENDED => EXTENDED,
+#      TEXT_HTML => TEXT_HTML,
+#      XML => XML,
+#      TEXT_XML => TEXT_XML,
+#      APPLICATION_XML => APPLICATION_XML,
+#      );
+#package Net::Z3950;
+#
+#
+## Define the reason-for-decodeAPDU()-failure enumeration.  This must
+## be kept synchronised with the values #defined in "yazwrap/yazwrap.h"
+#package Net::Z3950::Reason;
+#sub EOF        { 23951 }      # read EOF from connection (server gone)
+#sub Incomplete { 23952 }      # read bytes, but not yet a whole APDU
+#sub Malformed  { 23953 }      # couldn't decode APDU (malformed)
+#sub BadAPDU    { 23954 }      # APDU was well-formed but unrecognised
+#sub Error      { 23955 }      # some other error (consult errno)
+#package Net::Z3950;
+#
+#
+## Define the query-type enumeration.  This must be kept synchronised
+## with the values #defined in "yazwrap/yazwrap.h"
+#package Net::Z3950::QueryType;
+#sub Prefix  { 39501 }         # Yaz's "@attr"-ish forward-Polish notation
+#sub CCL     { 39502 }         # Send CCL string to server ``as is''
+#sub CCL2RPN { 39503 }         # Convert CCL to RPN (type-1) locally
+#sub CQL     { 39504 }         # Send CQL string to server ``as is''
+#package Net::Z3950;
+#
+#
+## Define the result-set-status enumeration, used by the
+## `resultSetStatus' field in the Net::Z3950::APDU::SearchResponse
+## class in cases where `searchStatus' is false (indicating failure).
+## This must be kept synchronised with the ASN.1 for the structure
+## described in section 3.2.2.1.11 of the Z39.50 standard itself.
+#package Net::Z3950::ResultSetStatus;
+#sub Subset  { 1 }
+#sub Interim { 2 }
+#sub None    { 3 }
+#package Net::Z3950;
+#
+#
+## Define the present-status enumeration, used by the `presentStatus'
+## field in the Net::Z3950::APDU::SearchResponse class in cases where
+## `searchStatus' is true (indicating success).  This must be kept
+## synchronised with the ASN.1 for the structure described in section
+## 3.2.2.1.11 of the Z39.50 standard itself.
+#package Net::Z3950::PresentStatus;
+#sub Success  { 0 }
+#sub Partial1 { 1 }
+#sub Partial2 { 2 }
+#sub Partial3 { 3 }
+#sub Partial4 { 4 }
+#sub Failure  { 5 }
+#package Net::Z3950;
+#
+#
+## Define the scan-status enumeration, used by the `scanStatus'
+## field in the Net::Z3950::APDU::ScanResponse class.  This must be
+## kept synchronised with the ASN.1 for the structure described in
+## section 3.2.8.1.6 of the Z39.50 standard itself.
+#package Net::Z3950::ScanStatus;
+#sub Success  { 0 }
+#sub Partial1 { 1 }
+#sub Partial2 { 2 }
+#sub Partial3 { 3 }
+#sub Partial4 { 4 }
+#sub Partial5 { 5 }
+#sub Failure  { 6 }
+#package Net::Z3950;
+
+# ----------------------------------------------------------------------------
+
+package Net::Z3950;
+
+sub errstr {
+    my($errcode) = @_;
+    # This is not 100% compatible, because it will translate
+    # ZOOM-level errors as well as BIB-1 diagnostic codes.
+    return Net::Z3950::ZOOM::diag_str($errcode)
+}
+
+sub opstr {
+    my($op) = @_;
+    return "error" if $op == Net::Z3950::Op::Error;
+    return "init" if $op == Net::Z3950::Op::Init;
+    return "search" if $op == Net::Z3950::Op::Search;
+    return "get" if $op == Net::Z3950::Op::Get;
+    return "deleteRS" if $op == Net::Z3950::Op::DeleteRS;
+    return "scan" if $op == Net::Z3950::Op::Scan;
+    return "unknown op " . $op;
+}
+
+
+# ----------------------------------------------------------------------------
+
+package Net::Z3950::Manager;
+sub new { Net::Z3950::Connection->new() }
+
+
+# ----------------------------------------------------------------------------
+
+package Net::Z3950::Connection;
+
+sub new {
+    die "The Net::Z3950::ZOOM distribution does not yet support the Net::Z3950 'Classic' API.  A subsequent version will do so; until then, please continue using Net::Z3950 itself if you need its API."
+}
+
+
+1;