Net::Amazon::Property::Book - Class for books on amazon.com


Net-Amazon documentation Contained in the Net-Amazon distribution.

Index


Code Index:

NAME

Top

Net::Amazon::Property::Book - Class for books on amazon.com

SYNOPSIS

Top

  use Net::Amazon;

  # ...

  if($resp->is_success()) {
      for my $prop ($resp->properties) {
          print join("/", $prop->authors()), " ",
                $prop->title(), " ",
                $prop->publisher(), " ",
                $prop->year(), "\n";
  }

DESCRIPTION

Top

Net::Amazon::Property::Book is derived from Net::Amazon::Property and on top of the all-purpose methods the base class provides, it offers specialized accessors for book parameters.

METHODS

authors()

Returns a list of the book's authors. There's also a author() method which just returns the first author.

publisher()

Returns the book's publishing company as a string.

title()

Returns the book's title as a string.

isbn()

Returns the book's ISBN number.

edition()

Returns the book's edition.

ean()

Returns the book's EAN number.

numpages()

Returns the number of pages.

dewey_decimal()

Returns the Dewey decimal number, this is for non-fiction only.

publication_date()

Returns the publication date.

ReleaseDate()

Returns the release date.

For historical reasons, this method used to return the publication date. However, as of version Net::Amazon 0.44 the release date is returned, and a separate publication_date() method is available.

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 Net::Amazon internally to initialize objects for on backcoming data.

Check out Net::Amazon::Property for all-purpose accessors, like year, OurPrice, ListPrice, etc.

AUTHOR

Top

Mike Schilli, <m@perlmeister.com>

COPYRIGHT AND LICENSE

Top


Net-Amazon documentation Contained in the Net-Amazon distribution.

###################################################################### 
package Net::Amazon::Property::Book;
######################################################################
use warnings;
use strict;
use base qw(Net::Amazon::Property);

__PACKAGE__->make_accessor($_) for qw(publisher binding isbn 
    dewey_decimal numpages edition ean publication_date);
__PACKAGE__->make_array_accessor($_) for qw(authors);

##################################################
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);

    my $ref = $xmlref->{ItemAttributes};

    $self->authors($ref->{Author});
    $self->binding($ref->{Binding});
    $self->dewey_decimal($ref->{DeweyDecimalNumber});
    $self->numpages($ref->{NumberOfPages});
    $self->publisher($ref->{Publisher});
    $self->isbn($ref->{ISBN});
    $self->edition($ref->{Edition});
    $self->ean($ref->{EAN});

    my $year = 0;
    if (defined $ref->{PublicationDate}) {
        $year =  (split(/\-/, $ref->{PublicationDate}))[0];
    }
    $self->year($year);

    $self->publication_date($ref->{PublicationDate});
}

##################################################
sub author {
##################################################
    my($self, $nameref) = @_;

    # Only return the first author
    return ($self->authors($nameref))[0];
}

##################################################
sub as_string {
##################################################
    my($self) = @_;

    my @a = (defined $self->authors) ? $self->authors : qw();

    return join('/', @a) . ", " .
      '"' . $self->title . '"' . ", " .
      $self->year . ", " .
      $self->_best_effort_price() . ", " .
      $self->ASIN;
}

1;

__END__