From bcbf441e09fb502cf64924ff2530fa144bdf52c5 Mon Sep 17 00:00:00 2001 From: Andreas Brachold Date: Mon, 13 Aug 2007 18:41:27 +0000 Subject: * Move files to trunk --- lib/Net/Amazon/Property/Book.pm | 152 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 lib/Net/Amazon/Property/Book.pm (limited to 'lib/Net/Amazon/Property/Book.pm') diff --git a/lib/Net/Amazon/Property/Book.pm b/lib/Net/Amazon/Property/Book.pm new file mode 100644 index 0000000..8a01756 --- /dev/null +++ b/lib/Net/Amazon/Property/Book.pm @@ -0,0 +1,152 @@ +###################################################################### +package Net::Amazon::Property::Book; +###################################################################### +use warnings; +use strict; +use base qw(Net::Amazon::Property); + +__PACKAGE__->make_accessor($_) for qw(title publisher binding isbn); + +################################################## +sub new { +################################################## + my($class, %options) = @_; + + my $self = $class->SUPER::new(%options); + bless $self, $class; # Bless into this class + + if(exists $options{xmlref}) { + $self->init_via_xmlref($options{xmlref}); + } + + return $self; +} + +################################################## +sub init_via_xmlref { +################################################## + my($self, $xmlref) = @_; + + $self->SUPER::init_via_xmlref($xmlref); + + $self->authors($xmlref->{Authors}->{Author}); + $self->title($xmlref->{ProductName}); + $self->publisher($xmlref->{Manufacturer}); + $self->binding($xmlref->{Media}); + $self->isbn($xmlref->{Isbn}); +} + +################################################## +sub author { +################################################## + my($self, $nameref) = @_; + + # Only return the first author + return ($self->authors($nameref))[0]; +} + +################################################## +sub authors { +################################################## + my($self, $nameref) = @_; + + if(defined $nameref) { + if(ref $nameref eq "ARRAY") { + $self->{authors} = $nameref; + } else { + $self->{authors} = [$nameref]; + } + } + + # Return a list + return $self->{authors} ? @{$self->{authors}} : (); +} + +################################################## +sub as_string { +################################################## + my($self) = @_; + + return join('/', $self->authors) . ", " . + '"' . $self->title . '"' . ", " . + $self->year . ", " . + $self->OurPrice . ", " . + $self->Asin; +} + +1; + +__END__ + +=head1 NAME + +Net::Amazon::Property::Book - Class for books on amazon.com + +=head1 SYNOPSIS + + use Net::Amazon; + + # ... + + if($resp->is_success()) { + for my $prop ($resp->properties) { + print join("/", $prop->authors(), " ", + $prop->title(), " ", + $prop->publisher(), " ", + $prop->year(), "\n"; + } + +=head1 DESCRIPTION + +C is derived from +C and on top of the all-purpose +methods the base class provides, it offers specialized accessors for +book parameters. + +=head2 METHODS + +=over 4 + +=item authors() + +Returns a list of the book's authors. There's also a C method +which just returns the I author. + +=item publisher() + +Returns the book's publishing company as a string. + +=item title() + +Returns the book's title as a string. + +=item isbn() + +Returns the book's ISBN number. + +=item new(xmlref => $xmlref) + +Initializes an object by passing a hash of hashes structure containing +the XML data returned from the service. Usually, this is just used by +C internally to initialize objects for on backcoming +data. + +=back + +Check out L for all-purpose accessors, like +C, C, C, etc. + +=head1 SEE ALSO + +=head1 AUTHOR + +Mike Schilli, Em@perlmeister.comE + +=head1 COPYRIGHT AND LICENSE + +Copyright 2003 by Mike Schilli Em@perlmeister.comE + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut -- cgit v1.2.3