diff options
Diffstat (limited to '')
-rwxr-xr-x | examples/upcrpc.pl | 46 |
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"); + } +} |