[open-ils-commits] r16755 - trunk/Open-ILS/src/edi_translator (atz)
svn at svn.open-ils.org
svn at svn.open-ils.org
Fri Jun 18 11:56:57 EDT 2010
Author: atz
Date: 2010-06-18 11:56:54 -0400 (Fri, 18 Jun 2010)
New Revision: 16755
Added:
trunk/Open-ILS/src/edi_translator/test_client.pl
Log:
EDI/JEDI Translator test client
Signed-off-by: Joe Atzberger <atz at esilibrary.com>
Added: trunk/Open-ILS/src/edi_translator/test_client.pl
===================================================================
--- trunk/Open-ILS/src/edi_translator/test_client.pl (rev 0)
+++ trunk/Open-ILS/src/edi_translator/test_client.pl 2010-06-18 15:56:54 UTC (rev 16755)
@@ -0,0 +1,104 @@
+#!/usr/bin/perl
+#
+
+use warnings;
+use strict;
+
+use Getopt::Long;
+use RPC::XML::Client;
+use Data::Dumper;
+
+# DEFAULTS
+my $host = 'http://localhost';
+my $verbose = 0;
+
+GetOptions(
+ 'host=s' => \$host,
+ 'verbose' => \$verbose,
+);
+
+# CLEANUP
+$host =~ /^\S+:\/\// or $host = 'http://' . $host;
+$host =~ /:\d+$/ or $host .= ':9191';
+$host .= '/EDI';
+
+sub get_in {
+ print "Getting " . (shift) . " from input\n";
+ my $json = join("", <STDIN>);
+ $json or return;
+ print $json, "\n";
+ chomp $json;
+ return $json;
+}
+
+sub nice_string {
+ my $string = shift or return '';
+ my $head = @_ ? shift : 100;
+ my $tail = @_ ? shift : 25;
+ (length($string) < $head + $tail) and return $string;
+ return substr($string,0,$head) . " ...\n... " . substr($string, -1*$tail);
+}
+
+# MAIN
+print "Trying host: $host\n";
+
+my $client = new RPC::XML::Client($host);
+$client->request->header('Content-Type' => 'text/xml;charset=utf-8');
+print "User-agent: ", Dumper($client->useragent);
+print "Request: ", Dumper($client->request);
+print "Headers: \n";
+foreach ($client->request->header_field_names) {
+ print "\t$_ =>", $client->request->header($_), "\n";
+}
+
+my @commands = @ARGV ? @ARGV : 'system.listMethods';
+if ($commands[0] eq 'json2edi' or $commands[0] eq 'edi2json') {
+ shift;
+ @commands > 1 and print "Ignoring commands after $commands[0]\n";
+ my $string;
+ my $type = $commands[0] eq 'json2edi' ? 'JSON' : 'EDI';
+ while ($string = get_in($type)) { # assignment
+ if ($commands[0] ne 'json2edi') {
+ $string =~ s/ORDRSP:0(:...:UN::)/ORDRSP:D$1/ and print "Corrected broken data 'ORDRSP:0' ==> 'ORDRSP:D'\n";
+ }
+ my $resp = $commands[0] eq 'json2edi' ?
+ $client->send_request('json2edi', $string) :
+ $client->send_request('edi2json', $string) ;
+ print "Response: ", Dumper($resp);
+ $resp or next;
+ if ($resp->is_fault) {
+ print "\n\nERROR code ", $resp->code, " received:\n", nice_string($resp->string) . "\n...\n";
+ next;
+ }
+ }
+ exit;
+}
+
+print "Sending request: \n ", join("\n ", @commands), "\n\n";
+my $resp = $client->send_request(@commands);
+
+print Dumper($resp);
+exit;
+
+if (ref $resp) {
+ print "Return is " . ref($resp), "\n";
+ # print "Code: ", ($resp->{code}->as_string || 'UNKNOWN'), "\n";
+ foreach (@$resp) {
+ print Dumper ($_), "\n";
+ }
+ foreach (qw(code faultcode)) {
+ my $code = $resp->{$_};
+ if ($code) {
+ print " ", ucfirst($_), ": ";
+ print $code ? $code->value : 'UNKNOWN';
+ }
+ print "\n";
+ }
+} else {
+ print "ERROR: unrecognized response:\n\n", Dumper($resp), "\n";
+}
+$verbose and print Dumper($resp);
+$verbose and print "\nKEYS (level 1):\n",
+ map {sprintf "%12s: %s\n", $_, scalar $resp->{$_}->value} sort keys %$resp;
+
+# print "spooled_filename: ", $resp->{spooled_filename}->value, "\n";
Property changes on: trunk/Open-ILS/src/edi_translator/test_client.pl
___________________________________________________________________
Name: svn:executable
+ *
More information about the open-ils-commits
mailing list