diff options
Diffstat (limited to 'lib/Net/Amazon/Request')
| -rw-r--r-- | lib/Net/Amazon/Request/ASIN.pm | 139 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/Artist.pm | 86 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/Blended.pm | 80 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/BrowseNode.pm | 137 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/Exchange.pm | 91 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/Keyword.pm | 90 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/Manufacturer.pm | 78 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/Power.pm | 95 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/Seller.pm | 84 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/Similar.pm | 95 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/Sort.pm | 246 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/TextStream.pm | 76 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/UPC.pm | 94 | ||||
| -rw-r--r-- | lib/Net/Amazon/Request/Wishlist.pm | 89 |
14 files changed, 1480 insertions, 0 deletions
diff --git a/lib/Net/Amazon/Request/ASIN.pm b/lib/Net/Amazon/Request/ASIN.pm new file mode 100644 index 0000000..4d8f752 --- /dev/null +++ b/lib/Net/Amazon/Request/ASIN.pm @@ -0,0 +1,139 @@ +###################################################################### +package Net::Amazon::Request::ASIN; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Request); + +# These values are defined in the AWS SDK +# (http://amazon.com/webservices) under +# "Product and Catalog Data" / "ASIN and ISBN Searches" +use constant MAX_ASINS_PER_TYPE => { + heavy => 10, + lite => 30, +}; + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + $class->_assert_options_defined(\%options, 'asin'); + + $class->_convert_option(\%options, + 'asin', + 'AsinSearch', + \&_process_asin_option); + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +## +## PRIVATE FUNCTIONS +## + +# _process_asin_option( OPTIONS, KEY ) +# +# Takes a reference to a hash of OPTIONS and checks the value keyed by +# KEY to make sure it looks legitimate. If the value associated with +# KEY is an array, we check to make sure that we're not asking for +# too many asins at once. +# +# Returns true if all goes well. If any problems are encountered, +# die() will be called. +# +sub _process_asin_option { + my ($options, $key) = @_; + + # If the asins are supplied in the form of an array, we have to + # make sure that the caller isn't trying to ask for too many at a + # time. If we don't make this test, those excessive asins will be + # silently ignored by the AWS servers...resulting in potentially + # confusing results for the user. + if ( ref $options->{$key} eq 'ARRAY' ) { + my $type = $options->{'type'} || __PACKAGE__->SUPER::DEFAULT_TYPE; + my $max_asins = MAX_ASINS_PER_TYPE->{$type}; + + # Dying is the right thing to do here because this is + # indicative of a programming error. + die "Only $max_asins may be requested at a time using type '$type'" + if ( @{$options->{$key}} > $max_asins ); + + $options->{$key} = join ',', @{$options->{$key}}; + } elsif ( ref $options->{$key} ) { + die "The 'asin' parameter must either be a scalar or an array"; + } + + return 1; +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::ASIN - Class for submitting ASIN requests + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::ASIN; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::ASIN->new( + asin => '0201360683' + ); + + # Response is of type Net::Amazon::Response::ASIN + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::ASIN> is a class used to submit ASIN requests +to the Amazon web service. + +The ASIN of the item to look is specified in the C<asin> parameter. + +Upon success, the responses' C<properties()> method will return one +single C<Net::Amazon::Property::*> object. + +=head2 METHODS + +=over 4 + +=item new( asin => $asin ) + +Constructs a new C<Net::Amazon::Request::ASIN> object, used to query +the Amazon web service for an item with the specified ASIN number. + +C<$asin> can also be a reference to an array of ASINs, like in + + $ua->search(asin => ["0201360683", "0596005083"]) + +in which case a search for multiple ASINs is performed, returning a list of +results. + +=back + +Check L<Net::Amazon::Request> for common request parameters not listed here. + +=head1 SEE ALSO + +=head1 AUTHOR + +Mike Schilli, E<lt>m@perlmeister.comE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright 2003 by Mike Schilli E<lt>m@perlmeister.comE<gt> + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut diff --git a/lib/Net/Amazon/Request/Artist.pm b/lib/Net/Amazon/Request/Artist.pm new file mode 100644 index 0000000..4c111f8 --- /dev/null +++ b/lib/Net/Amazon/Request/Artist.pm @@ -0,0 +1,86 @@ +###################################################################### +package Net::Amazon::Request::Artist; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Request); + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + if(exists $options{artist}) { + $options{ArtistSearch} = $options{artist}; + delete $options{artist}; + $options{mode} = "music"; + } else { + die "Mandatory parameter 'artist' not defined"; + } + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::Artist - Class for submitting Artist requests + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::Artist; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::Artist->new( + artist => 'Zwan' + ); + + # Response is of type Net::Amazon::Response::Artist + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::Artist> is a class used to submit Artist search +requests to the Amazon web service. + +The artist to search for is specified in the C<artist> parameter. + +Upon success, the responses' C<properties()> method will return a list of +C<Net::Amazon::Property::Music> objects. + +Check L<Net::Amazon::Request> for common request parameters not listed here. + +=head2 METHODS + +=over 4 + +=item new( artist => $artist ) + +Constructs a new C<Net::Amazon::Request::Artist> object, used to query +the Amazon web service for items of a given artist. + +=back + +=head1 SEE ALSO + +=head1 AUTHOR + +Mike Schilli, E<lt>m@perlmeister.comE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright 2003 by Mike Schilli E<lt>m@perlmeister.comE<gt> + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut diff --git a/lib/Net/Amazon/Request/Blended.pm b/lib/Net/Amazon/Request/Blended.pm new file mode 100644 index 0000000..1000eec --- /dev/null +++ b/lib/Net/Amazon/Request/Blended.pm @@ -0,0 +1,80 @@ +###################################################################### +package Net::Amazon::Request::Blended; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Request); + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + $class->_assert_options_defined(\%options, 'blended'); + + $class->_convert_option(\%options, + 'blended', + 'BlendedSearch'); + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::Blended - request class for 'Blended Search' + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::Blended; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::Blended->new( + blended => 'perl' + ); + + # Response is of type Net::Amazon::Response::Blended + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::Blended> is a class used to request +I<Blended Searches> from the Amazon web service. + +The C<blended> parameter specifies the keyword search string +for the blended query. C<mode> is not applicable to blended +searches which returns books, music, etc all at once. + +Upon success, the response's C<properties()> method will return a list +of C<Net::Amazon::Property::*> objects. + +=head2 METHODS + +=over 4 + +=item new(keyword => $search_string) + +Constructs a new C<Net::Amazon::Request::Blended> object. + +See the "Amazon Web Services 2.1 API and Integration Guide" for details. + +=back + +Check L<Net::Amazon::Request> for common request parameters not listed here. + +=head1 SEE ALSO + +=head1 AUTHORS + +Robert Graff, E<lt>rgraff@workingdemo.comE<gt> + +=cut diff --git a/lib/Net/Amazon/Request/BrowseNode.pm b/lib/Net/Amazon/Request/BrowseNode.pm new file mode 100644 index 0000000..2f8d92f --- /dev/null +++ b/lib/Net/Amazon/Request/BrowseNode.pm @@ -0,0 +1,137 @@ +###################################################################### +package Net::Amazon::Request::BrowseNode; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Request); + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + $class->_assert_options_defined(\%options, + qw(browsenode mode)); + + $class->_convert_option(\%options, + 'browsenode', + 'BrowseNodeSearch', + \&_assert_node_is_numeric); + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +## +## 'PRIVATE' FUNCTIONS +## + +# _assert_node_is_numeric( OPTIONS, KEY ) +# +# Takes a reference to a hash of OPTIONS and makes sure +# that the browse node id keyed by KEY is numeric. +# +# Returns if all is well, dies otherwise. +# +sub _assert_node_is_numeric { + my ($options, $key) = @_; + + die "Browse Node ID must be numeric." + if ( $options->{$key} =~ /\D/ ); +} + + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::BrowseNode - request class for browse node search + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::BrowseNode; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::BrowseNode->new( + browsenode => 30, + mode => 'books' + ); + + # Response is of type Net::Amazon::Response::BrowseNode + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::BrowseNode> is a class used to submit node search +requests to the Amazon web service. + +The node to search for is specified in the C<browsenode> parameter. The +browse node ID is a number that corresponds to a general subject area +of Amazon.com. + +To find browse node IDs, the best way is to visit the "browse" area +of the various product lines at Amazon.com. When you find a subject area +that you would like to generate XML for, look at the web page URL. The +browse ID should appear after the string "/tg/browse/-/". Here are some +examples of URLs that contain browse IDs: + +=over 8 + +http://www.amazon.com/exec/obidos/tg/browse/-/30 +(In this example, the browse ID = 30) + +http://www.amazon.com/exec/obidos/tg/browse/-/467970 +(In this example, the browse ID = 467970) + +http://www.amazon.com/exec/obidos/tg/browse/-/602314 +(In this example, the browse ID = 60231 + +=back + +Please be aware that some nodes cannot be used with a +BrowseNodeSearch. (The vast majority of them can, but you +may run across a few that simply will not work). It is also +important to point out that from time to time, some browse +nodes are deprecated or are changed without notice. + +The catalog to search in is specified in the C<mode> parameter, +typical values are C<books>, C<music>, C<classical> or C<electronics>. + +An optional C<keywords> parameter may be added to filter the results by that keyword. + +Upon success, the responses' C<properties()> method will return a list of +C<Net::Amazon::Properties::*> objects. + +=head2 METHODS + +=over 4 + +=item new( browsenode => $nodeID, mode => $mode [, keywords => $keywords] ) + +Constructs a new C<Net::Amazon::Request::BrowseNode> object, used to query +the Amazon web service for items in a particular category (node) in the +mode (catalog) specified. + +=back + +Check L<Net::Amazon::Request> for common request parameters not listed here. + +=head1 AUTHOR + +Net::Amazon framework by Mike Schilli, E<lt>m@perlmeister.comE<gt> + +BrowseNode.pm by Jackie Hamilton, E<lt>kira@cgi101.comE<gt> + +=head1 LICENSE + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut diff --git a/lib/Net/Amazon/Request/Exchange.pm b/lib/Net/Amazon/Request/Exchange.pm new file mode 100644 index 0000000..df75549 --- /dev/null +++ b/lib/Net/Amazon/Request/Exchange.pm @@ -0,0 +1,91 @@ +###################################################################### +package Net::Amazon::Request::Exchange; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Request); + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + if(exists $options{exchange}) { + $options{ExchangeSearch} = $options{exchange}; + delete $options{exchange}; + $options{type} = "lite"; + $options{mode} = ""; + } else { + die "Mandatory parameter 'exchange' not defined"; + } + +# if(!exists $options{exchange}) { +# die "Mandatory parameter 'exchange' not defined"; +# } + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::Exchange - Class for submitting Exchange requests + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::Exchange; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::Exchange->new( + exchange => 'Y04Y3424291Y2398445' + ); + + # Response is of type Net::Amazon::Response::Seller + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::Exchange> is a class used to submit Exchange search +requests to the Amazon web service. Exchange requests send an item's +exchange ID and retrieve a description of the item, offered by a third +party seller on Amazon. + +Upon success, the responses' C<result()> method will return a single +C<Net::Amazon::Result::Seller::Listing> object. + +Check L<Net::Amazon::Request> for common request parameters not listed here. + +=head2 METHODS + +=over 4 + +=item new( exchange => $exchange_id ) + +Constructs a new C<Net::Amazon::Request::Exchange> object, used to query +the Amazon web service with the given seller id. + +=back + +=head1 SEE ALSO + +=head1 AUTHOR + +Mike Schilli, E<lt>m@perlmeister.comE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright 2005 by Mike Schilli E<lt>m@perlmeister.comE<gt> + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut diff --git a/lib/Net/Amazon/Request/Keyword.pm b/lib/Net/Amazon/Request/Keyword.pm new file mode 100644 index 0000000..0b15d1d --- /dev/null +++ b/lib/Net/Amazon/Request/Keyword.pm @@ -0,0 +1,90 @@ +###################################################################### +package Net::Amazon::Request::Keyword; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Request); + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + $class->_assert_options_defined(\%options, + qw(keyword mode)); + + $class->_convert_option(\%options, + 'keyword', + 'KeywordSearch'); + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::Keyword - request class for keyword search + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::Keyword; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::Keyword->new( + keyword => 'Zwan', + mode => 'books' + ); + + # Response is of type Net::Amazon::Response::Keyword + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::Keyword> is a class used to submit keyword search +requests to the Amazon web service. + +The keyword to search for is specified in the C<keyword> parameter. + +The catalog to search in is specified in the C<mode> parameter, +typical values are C<books>, C<music>, C<classical> or C<electronics>. + +Upon success, the responses' C<properties()> method will return a list of +C<Net::Amazon::Property::*> objects. + +=head2 METHODS + +=over 4 + +=item new( keyword => $keyword, mode => $mode ) + +Constructs a new C<Net::Amazon::Request::Keyword> object, used to query +the Amazon web service for items matching a given keyword in the +mode (catalog) specified. + +=back + +Check L<Net::Amazon::Request> for common request parameters not listed here. + +=head1 SEE ALSO + +=head1 AUTHOR + +Mike Schilli, E<lt>m@perlmeister.comE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright 2003 by Mike Schilli E<lt>m@perlmeister.comE<gt> + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut diff --git a/lib/Net/Amazon/Request/Manufacturer.pm b/lib/Net/Amazon/Request/Manufacturer.pm new file mode 100644 index 0000000..0e8adb8 --- /dev/null +++ b/lib/Net/Amazon/Request/Manufacturer.pm @@ -0,0 +1,78 @@ +######################################
+package Net::Amazon::Request::Manufacturer;
+######################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+######################################
+sub new {
+######################################
+ my($class, %options) = @_;
+
+ $class->_assert_options_defined(\%options,
+ 'manufacturer');
+
+ $class->_convert_option(\%options,
+ 'manufacturer',
+ 'ManufacturerSearch');
+
+ my $self = $class->SUPER::new(%options);
+
+ bless $self, $class; # reconsecrate
+}
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::Manufacturer - Class for submitting Manufacturer requests
+
+=head1 SYNOPSIS
+
+ use Net::Amazon;
+ use Net::Amazon::Request::Manufacturer;
+
+ my $ua = Net::Amazon->new(
+ token => 'YOUR_AMZN_TOKEN'
+ );
+
+ my $req = Net::Amazon::Request::Manufacturer->new(
+ manufacturer => 'Disney'
+ );
+
+ # Response is of type Net::Amazon::Response::Manufacturer
+ my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::Manufacturer> is a class used to submit
+searches for items made by a given manufacturer.
+
+The manufacturer to search for is specified in the C<manufacturer> parameter.
+
+Upon success, the responses' C<properties()> method will return one
+or more C<Net::Amazon::Property::*> objects.
+
+=head2 METHODS
+
+=over 4
+
+=item new( manufacturer => $manufacturer )
+
+Constructs a new C<Net::Amazon::Request::Manufacturer> object, used to query
+the Amazon web service for an item with the specified manufacturer name.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 SEE ALSO
+
+=head1 AUTHORS
+
+Bill Fitzpatrick
+Mike Schilli, E<lt>m@perlmeister.comE<gt>
+
+=cut
diff --git a/lib/Net/Amazon/Request/Power.pm b/lib/Net/Amazon/Request/Power.pm new file mode 100644 index 0000000..fdfd74e --- /dev/null +++ b/lib/Net/Amazon/Request/Power.pm @@ -0,0 +1,95 @@ +###################################################################### +package Net::Amazon::Request::Power; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Request); + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + $class->_assert_options_defined(\%options, + qw(power mode)); + + $class->_convert_option(\%options, + 'power', + 'PowerSearch'); + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::Power - request class for 'Power Search' + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::Power; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::Power->new( + power => 'subject: perl and author: schwartz', + mode => 'books', + ); + + # Response is of type Net::Amazon::Response::Power + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::Power> is a class used to request +so-called I<Power Searches> from the Amazon web service. + +The C<power> parameter specifies the power search string, C<mode> +defines which properties to look for. + +Upon success, the response's C<properties()> method will return a list +of C<Net::Amazon::Property::*> objects. + +=head2 METHODS + +=over 4 + +=item new(power => $search_string, mode => $property) + +Constructs a new C<Net::Amazon::Request::Power> object. C<$property> +is typically C<"books">. Examples for C<$search_string> are: + + author: schwartz + + author: schwartz and pubdate: after 10-2002 + + subject: perl and (objects or object-oriented) + + keywords: "high tech*" and not fiction and pubdate: during 1999 + + power "author: randal schwartz and publisher: Addison Wesley" + + author: randal schwartz and title: object books + +See the "Amazon Web Services 2.1 API and Integration Guide" for details. + +=back + +Check L<Net::Amazon::Request> for common request parameters not listed here. + +=head1 SEE ALSO + +=head1 AUTHORS + +Martin Streicher, E<lt>martin.streicher@apress.comE<gt> +Mike Schilli, E<lt>m@perlmeister.comE<gt> + +=cut diff --git a/lib/Net/Amazon/Request/Seller.pm b/lib/Net/Amazon/Request/Seller.pm new file mode 100644 index 0000000..54e1930 --- /dev/null +++ b/lib/Net/Amazon/Request/Seller.pm @@ -0,0 +1,84 @@ +###################################################################### +package Net::Amazon::Request::Seller; +###################################################################### +use base qw(Net::Amazon::Request); + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + if(exists $options{seller}) { + $options{SellerSearch} = $options{seller}; + delete $options{seller}; + } else { + die "Mandatory parameter 'seller' not defined"; + } + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::Seller - Class for submitting Seller requests + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::Seller; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::Seller->new( + seller => 'A2GXAGU54VOP7' + ); + + # Response is of type Net::Amazon::Response::Seller + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::Seller> is a class used to submit Seller search +requests to the Amazon web service. + +The seller to search for is specified in the C<seller> parameter, which +contains the seller's ID (not the seller's nickname!). + +Upon success, the responses' C<result()> method will return a single +C<Net::Amazon::Result::Seller> object. + +Check L<Net::Amazon::Request> for common request parameters not listed here. + +=head2 METHODS + +=over 4 + +=item new( seller => $seller_id ) + +Constructs a new C<Net::Amazon::Request::Seller> object, used to query +the Amazon web service with the given seller id. + +=back + +=head1 SEE ALSO + +=head1 AUTHOR + +Mike Schilli, E<lt>m@perlmeister.comE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright 2004 by Mike Schilli E<lt>m@perlmeister.comE<gt> + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut diff --git a/lib/Net/Amazon/Request/Similar.pm b/lib/Net/Amazon/Request/Similar.pm new file mode 100644 index 0000000..c5b5a53 --- /dev/null +++ b/lib/Net/Amazon/Request/Similar.pm @@ -0,0 +1,95 @@ +###################################################################### +package Net::Amazon::Request::Similar; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Request); + +our $AMZN_XML_URL = "http://xml.amazon.com/onca/xml3"; + +################################################## +sub amzn_xml_url { +################################################## + return $AMZN_XML_URL; +} + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + # For backwards compatibility + $class->_convert_option(\%options, 'asin', 'similar'); + + $class->_assert_options_defined(\%options, 'similar'); + + $class->_convert_option(\%options, + 'similar', + 'SimilaritySearch'); + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::Similar - request class for 'Similarities Search' + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::Similar; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::Similar->new( + similar => 'B00005B6TL', + ); + + # Response is of type Net::Amazon::Response::Similar + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::Similar> is a class used to request +so-called I<Similarities Searches> from the Amazon web service. + +The C<asin> parameter specifies the ASIN of the item which you want +to get similar items for. + +Upon success, the response's C<properties()> method will return a list +of C<Net::Amazon::Property::*> objects. + +=head2 METHODS + +=over 4 + +=item new(similar => $asin) + +Constructs a new C<Net::Amazon::Request::Similar> object. + +=back + +Check L<Net::Amazon::Request> for common request parameters not listed here. + +=head1 SEE ALSO + +=head1 AUTHOR + +Mike Schilli, E<lt>m@perlmeister.comE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright 2003 by Mike Schilli E<lt>m@perlmeister.comE<gt> + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut diff --git a/lib/Net/Amazon/Request/Sort.pm b/lib/Net/Amazon/Request/Sort.pm new file mode 100644 index 0000000..059845d --- /dev/null +++ b/lib/Net/Amazon/Request/Sort.pm @@ -0,0 +1,246 @@ +=pod
+
+=head1 SORT TYPES
+
+Search results can be sorted in various ways, depending on the type of
+product returned by the search. If a sort parameter isn't specified in
+the request, the results will be ordered as if the +salesrank value is
+specified.
+
+=head2 Sorting Books Results
+
+ +---------------------------------------------------+
+ | Sort Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +pmrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Average Customer Review | +reviewrank |
+ |-------------------------+-------------------------+
+ | Price (Low to High) | +pricerank |
+ |-------------------------+-------------------------+
+ | Price (High to Low) | +inverse-pricerank |
+ |-------------------------+-------------------------+
+ | Publication Date | +daterank |
+ |-------------------------+-------------------------+
+ | Alphabetical (A-Z) | +titlerank |
+ |-------------------------+-------------------------+
+ | Alphabetical (Z-A) | -titlerank |
+ +---------------------------------------------------+
+
+=head2 Sorting Software Results
+
+ +---------------------------------------------------+
+ | Sort Type | Value |
+ |-------------------------+-------------------------+
+ | Featured items | +pmrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical | +titlerank |
+ |-------------------------+-------------------------+
+ | Price (High to Low) | +price |
+ |-------------------------+-------------------------+
+ | Price (Low to High) | -price |
+ +---------------------------------------------------+
+
+=head2 Sorting Outdoor Living Results
+
+ +---------------------------------------------------+
+ | Sort Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +psrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical (A-Z) | +titlerank |
+ |-------------------------+-------------------------+
+ | Alphabetical (Z-A) | -titlerank |
+ |-------------------------+-------------------------+
+ | Manufacturer (A-Z) | +manufactrank |
+ |-------------------------+-------------------------+
+ | Manufacturer (Z-A) | -manufactrank |
+ |-------------------------+-------------------------+
+ | Price (Low to High) | +price |
+ |-------------------------+-------------------------+
+ | Price (High to Low) | -price |
+ +---------------------------------------------------+
+
+=head2 Sorting Tools Results
+
+ +---------------------------------------------------+
+ | Sort Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +psrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical (A-Z) | +titlerank |
+ |-------------------------+-------------------------+
+ | Alphabetical (Z-A) | -titlerank |
+ |-------------------------+-------------------------+
+ | Manufacturer (A-Z) | +manufactrank |
+ |-------------------------+-------------------------+
+ | Manufacturer (Z-A) | -manufactrank |
+ |-------------------------+-------------------------+
+ | Price (Low to High) | +price |
+ |-------------------------+-------------------------+
+ | Price (High to Low) | -price |
+ +---------------------------------------------------+
+
+=head2 Sorting Camera and Photo Results
+
+ +---------------------------------------------------+
+ | Sort Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +pmrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical (A-Z) | +titlerank |
+ |-------------------------+-------------------------+
+ | Alphabetical (Z-A) | -titlerank |
+ +---------------------------------------------------+
+
+=head2 Sorting Computers Results
+
+ +---------------------------------------------------+
+ | Sort Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +psrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical (A-Z) | +titlerank |
+ |-------------------------+-------------------------+
+ | Alphabetical (Z-A) | -titlerank |
+ +---------------------------------------------------+
+
+=head2 Sorting Video Games Results
+
+ +---------------------------------------------------+
+ | Sort Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +pmrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical | +titlerank |
+ |-------------------------+-------------------------+
+ | Price (Low to High) | +price |
+ |-------------------------+-------------------------+
+ | Price (High to Low) | -price |
+ +---------------------------------------------------+
+
+=head2 Sorting Music Results
+
+ +---------------------------------------------------+
+ | Sort Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +psrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Artist Name | +artistrank |
+ |-------------------------+-------------------------+
+ | Original Release Date | +orig-rel-date |
+ |-------------------------+-------------------------+
+ | Alphabetical | +titlerank |
+ +---------------------------------------------------+
+
+=head2 Sorting Office Products Results
+
+ +---------------------------------------------------+
+ | Sort Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +pmrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical (A-Z) | +titlerank |
+ |-------------------------+-------------------------+
+ | Alphabetical (Z-A) | -titlerank |
+ |-------------------------+-------------------------+
+ | Price (Low to High) | +price |
+ |-------------------------+-------------------------+
+ | Price (High to Low) | -price |
+ |-------------------------+-------------------------+
+ | Review | +reviewrank |
+ +---------------------------------------------------+
+
+=head2 Sorting Video Results
+
+ +---------------------------------------------------+
+ | Sort Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +psrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical | +titlerank |
+ +---------------------------------------------------+
+
+=head2 Sorting Electronics Results
+
+ +---------------------------------------------------+
+ | Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +pmrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical | +titlerank |
+ |-------------------------+-------------------------+
+ | Review | +reviewrank |
+ +---------------------------------------------------+
+
+=head2 Sorting DVDs Results
+
+ +---------------------------------------------------+
+ | Type | Value |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical | +titlerank |
+ +---------------------------------------------------+
+
+=head2 Sorting Kitchen Results
+
+ +---------------------------------------------------+
+ | Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +pmrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Alphabetical (A-Z) | +titlerank |
+ |-------------------------+-------------------------+
+ | Alphabetical (Z-A) | -titlerank |
+ |-------------------------+-------------------------+
+ | Manufacturer (A-Z) | +manufactrank |
+ |-------------------------+-------------------------+
+ | Manufacturer (Z-A) | -manufactrank |
+ |-------------------------+-------------------------+
+ | Price (Low to High) | +price |
+ |-------------------------+-------------------------+
+ | Price (High to Low) | -price |
+ +---------------------------------------------------+
+
+=head2 Sorting Toys Results
+
+ +---------------------------------------------------+
+ | Type | Value |
+ |-------------------------+-------------------------+
+ | Featured Items | +pmrank |
+ |-------------------------+-------------------------+
+ | Bestselling | +salesrank |
+ |-------------------------+-------------------------+
+ | Price (Low to High) | +pricerank |
+ |-------------------------+-------------------------+
+ | Price (High to Low) | +inverse-pricerank |
+ |-------------------------+-------------------------+
+ | Alphabetical (A-Z) | +titlerank |
+ +---------------------------------------------------+
+
+=cut
diff --git a/lib/Net/Amazon/Request/TextStream.pm b/lib/Net/Amazon/Request/TextStream.pm new file mode 100644 index 0000000..62a0717 --- /dev/null +++ b/lib/Net/Amazon/Request/TextStream.pm @@ -0,0 +1,76 @@ +######################################################################
+package Net::Amazon::Request::TextStream;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+ my($class, %options) = @_;
+
+ $class->_assert_options_defined(\%options,
+ 'textstream');
+
+ $class->_convert_option(\%options,
+ 'textstream',
+ 'TextStreamSearch');
+
+ my $self = $class->SUPER::new(%options);
+
+ bless $self, $class; # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::TextStream - request class for text stream search
+
+=head1 SYNOPSIS
+
+ use Net::Amazon;
+ use Net::Amazon::Request::TextStream;
+
+ my $ua = Net::Amazon->new(
+ token => 'YOUR_AMZN_TOKEN'
+ );
+
+ my $req = Net::Amazon::Request::TextStream->new(
+ textstream => 'Here is some text that mentions the Rolling Stones.',
+ );
+
+ # Response is of type Net::Amazon::Response::TextStream
+ my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::TextStream> is a class used to perform a search on
+a block of text. Amazon extracts keywords from the given block of text,
+but note that conjunctions and helper words, such as "and", "or", "the",
+etc. are not excluded, so strip them out yourself if need be.
+
+TextStream searching is only available for the US service.
+
+Upon success, the response's C<properties()> method will return a list
+of C<Net::Amazon::Property::*> objects.
+
+=head2 METHODS
+
+=over 4
+
+=item new(textstream => $text)
+
+Constructs a new C<Net::Amazon::Request::TextStream> object, used to query
+the Amazon web service with a block of text.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 SEE ALSO
+
+=cut
diff --git a/lib/Net/Amazon/Request/UPC.pm b/lib/Net/Amazon/Request/UPC.pm new file mode 100644 index 0000000..ae77645 --- /dev/null +++ b/lib/Net/Amazon/Request/UPC.pm @@ -0,0 +1,94 @@ +###################################################################### +package Net::Amazon::Request::UPC; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Request); + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + $class->_assert_options_defined(\%options, 'upc'); + + $class->_convert_option(\%options, + 'upc', + 'UpcSearch'); + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::UPC - request class for UPC search + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::UPC; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::UPC->new( + upc => '724381198421', + mode => 'music', + + ); + + # Response is of type Net::Amazon::Response::UPC + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::UPC> is a class used to submit UPC (product barcode) +search requests to the Amazon web service. + +The UPC number to search for is specified in the C<upc> parameter. +It currently works with the following values of the C<mode> parameter: +C<music>, +C<classical>, +C<software>, +C<dvd>, +C<video>, +C<vhs>, +C<electronics>, +C<pc-hardware>, and +C<photo>. + +Upon success, the response's C<properties()> method will return a single +C<Net::Amazon::Property::Music> object. + +=head2 METHODS + +=over 4 + +=item new(upc => $upc) + +Constructs a new C<Net::Amazon::Request::UPC> object, used to query +the Amazon web service for an item with the given UPC number. + +=back + +=head1 SEE ALSO + +=head1 AUTHOR + +Mike Schilli, E<lt>m@perlmeister.comE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright 2003 by Mike Schilli E<lt>m@perlmeister.comE<gt> + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut diff --git a/lib/Net/Amazon/Request/Wishlist.pm b/lib/Net/Amazon/Request/Wishlist.pm new file mode 100644 index 0000000..824d5d4 --- /dev/null +++ b/lib/Net/Amazon/Request/Wishlist.pm @@ -0,0 +1,89 @@ +###################################################################### +package Net::Amazon::Request::Wishlist; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Request); + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + # For backwards compatibility: + $class->_convert_option(\%options, 'id', 'wishlist'); + + $class->_assert_options_defined(\%options, 'wishlist'); + + $class->_convert_option(\%options, + 'wishlist', + 'WishlistSearch'); + + my $self = $class->SUPER::new(%options); + + bless $self, $class; # reconsecrate +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Request::Wishlist - request class for wishlist search + +=head1 SYNOPSIS + + use Net::Amazon; + use Net::Amazon::Request::Wishlist; + + my $ua = Net::Amazon->new( + token => 'YOUR_AMZN_TOKEN' + ); + + my $req = Net::Amazon::Request::Wishlist->new( + wishlist => '1XL5DWOUFMFVJ', + ); + + # Response is of type Net::Amazon::Response::Wishlist + my $resp = $ua->request($req); + +=head1 DESCRIPTION + +C<Net::Amazon::Request::Wishlist> is a class used to request +a specified wishlist. + +The wishlist ID (can be found as parameters in URLs when a customer's +Amazon wishlist is being pulled up) is specified in the C<id> parameter. + +Upon success, the response's C<properties()> method will return a list +of C<Net::Amazon::Property::*> objects. + +=head2 METHODS + +=over 4 + +=item new(wishlist => $id) + +Constructs a new C<Net::Amazon::Request::Wishlist> object, used to query +the Amazon web service for a specific wishlist, identified by the wishlist +ID. + +=back + +Check L<Net::Amazon::Request> for common request parameters not listed here. + +=head1 SEE ALSO + +=head1 AUTHOR + +Mike Schilli, E<lt>m@perlmeister.comE<gt> + +=head1 COPYRIGHT AND LICENSE + +Copyright 2003 by Mike Schilli E<lt>m@perlmeister.comE<gt> + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut |
