move SIP2::send into package
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 16 Dec 2009 15:39:58 +0000 (16:39 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 16 Dec 2009 15:39:58 +0000 (16:39 +0100)
SIP2.pm
sc-emulator.pl

diff --git a/SIP2.pm b/SIP2.pm
index 612525a..e5ec9bd 100644 (file)
--- a/SIP2.pm
+++ b/SIP2.pm
@@ -2,6 +2,13 @@ package SIP2;
 
 use Data::Dump qw();
 
+our $sock;
+
+sub connect {
+       $sock = IO::Socket::INET->new( @_ ) || die "can't connect to ", dump(@_), ": $!";
+}
+
+
 my $message_codes;
 foreach ( <DATA> ) {
        my ($code,$description) = split(/\t/,$_,2);
@@ -15,6 +22,23 @@ sub dump_message {
        warn $prefix, " ", $message_codes->{$code}, Data::Dump::dump($message), "\n";
 }
 
+
+sub send {
+       my ( $send ) = @_;
+       SIP2::dump_message '>>>>', $send;
+       print $sock "$send\r\n";
+       $sock->flush;
+
+#      local $/ = "\r";
+
+       my $expect = substr($send,0,2) | 0x01;
+
+       my $in = <$sock>;
+       SIP2::dump_message '<<<<', $in;
+       die "expected $expect" unless substr($in,0,2) != $expect;
+}
+
+
 1;
 
 __DATA__
index 9bdf08a..3488612 100755 (executable)
@@ -16,34 +16,27 @@ require 'config.pl' if -e 'config.pl';
 
 use SIP2;
 
-our $sock = IO::Socket::INET->new( '10.60.0.251:6001' );
-
-
-sub sip2 {
-       my ( $send, $patt ) = @_;
-       SIP2::dump_message '>>>>', $send;
-       print $sock "$send\r\n";
-       $sock->flush;
-
-#      local $/ = "\r";
-
-       my $in = <$sock>;
-       SIP2::dump_message '<<<<', $in;
-       die "expected $patt" unless $in =~ $patt;
-}
+SIP2::connect '10.60.0.251:6001';
 
 # login
-sip2 "9300CN$user|CO$password|" => qr/^941/;
+SIP2::send "9300CN$user|CO$password|";
 
 # SC Status
-sip2 "9900302.00" => qr/^98/;
+SIP2::send "9900302.00";
 
 # Patron Information
-sip2 "6300020091214    085452          AO$loc|AA$patron|AC$password|" => qr/^64/;
+SIP2::send "6300020091214    085452          AO$loc|AA$patron|AC$password|";
 
 # Checkout
-sip2 "11YN20091214    124436                  AO$loc|AA$patron|AB$barcode|AC$password|BON|BIN|" => qw/12/;
+SIP2::send "11YN20091214    124436                  AO$loc|AA$patron|AB$barcode|AC$password|BON|BIN|";
 
 # Checkin
-sip2 "09N20091214    08142820091214    081428AP|AO$loc|AB$barcode|AC|BIN|" => qr/^10/;
+SIP2::send "09N20091214    08142820091214    081428AP|AO$loc|AB$barcode|AC|BIN|";
+
+
+# checkout another
+SIP2::send "09N20091216    15320820091216    153208AP|AOFFZG|AB200903160190|ACviva2koha|BIN|";
+
+# status
+SIP2::send "9900302.00";