summaryrefslogtreecommitdiffstats
path: root/examples/upcrpc.pl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/upcrpc.pl')
-rwxr-xr-xexamples/upcrpc.pl46
1 files changed, 46 insertions, 0 deletions
diff --git a/examples/upcrpc.pl b/examples/upcrpc.pl
new file mode 100755
index 0000000..5b0e10e
--- /dev/null
+++ b/examples/upcrpc.pl
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use Frontier::Client;
+use Data::Dumper;
+my $s = Frontier::Client->new('url' => 'http://www.upcdatabase.com/rpc');
+
+$| = 1; # autoflush
+
+foreach (@ARGV) {
+ lookup($_);
+}
+if(!-t) {
+ while(1) {
+ my $decode = <STDIN>;
+ last unless(defined($decode));
+ chomp($decode);
+ lookup($decode);
+ }
+}
+
+sub lookup {
+ my $decode = shift;
+ if($decode =~ m[^(EAN-13:|UPC-A:)?(\d{11,13})$] &&
+ ($1 && $1 eq "UPC-A:") || ($2 && length($2) > 11)) {
+ my $ean = $2;
+ $ean = "0" . $ean
+ if($1 && $1 eq "UPC-A:");
+ $ean = $s->call('calculateCheckDigit', $ean . "C")
+ if(length($ean) == 12);
+ print("[$decode] ");
+ my $result = $s->call('lookupEAN', $s->string($ean));
+ if(ref($result)) {
+ print((!$result->{found} ||
+ (ref($result->{found}) && !$result->{found}->value()))
+ ? "not found\n"
+ : "$result->{description}\n")
+ }
+ else {
+ print("$result\n");
+ }
+ }
+ else {
+ print("$decode\n");
+ }
+}