######################################################################
package Net::Amazon::Response::Wishlist;
######################################################################
use warnings;
use strict;
use base qw(Net::Amazon::Response);

use Net::Amazon::Property;
use Data::Dumper;
use Log::Log4perl qw(:easy get_logger);

##################################################
sub new {
##################################################
    my($class, %options) = @_;

    my $self = $class->SUPER::new(%options);

    bless $self, $class;   # reconsecrate
}

##################################################
sub xmlref_add {
##################################################
    my($self, $xmlref) = @_;

    my $nof_items_added = 0;

    unless(ref($self->{xmlref}) eq "HASH" &&
            ref($self->{xmlref}->{Items}) eq "ARRAY") {
        $self->{xmlref}->{Items} = [];
    }

    if(ref($xmlref->{Lists}->{List}->{ListItem}) eq "ARRAY") {
        push @{$self->{xmlref}->{Items}}, 
             $_->{Item} for @{$xmlref->{Lists}->{List}->{ListItem}};
        $nof_items_added = scalar @{$xmlref->{Lists}->{List}->{ListItem}};
    } else {
        push @{$self->{xmlref}->{Items}}, 
             $xmlref->{Lists}->{List}->{ListItem}->{Item};
        $nof_items_added = 1;
    }

    DEBUG("xmlref_add (after):", Data::Dumper::Dumper($self));
    return $nof_items_added;
}

##################################################
sub current_page {
##################################################
    # This is a, "I cannot determine because Amazon won't tell me."
}

##################################################
sub set_total_results {
##################################################
    # This is a, "I cannot determine because Amazon won't tell me."
}

##################################################
sub is_page_available {
##################################################
    my($self, $ref, $new_items, $page) = @_;
    DEBUG("Trying to fetch additional wishlist page (AMZN bug)");
    return ($Net::Amazon::IS_CANNED) ? $new_items == 10 : $new_items > 0;
}

##################################################
sub is_page_error {
##################################################
    my($self, $ref, $res) = @_;

    if(exists $ref->{Lists}->{Request}->{Errors}) {
        my $errref = $ref->{Lists}->{Request}->{Errors};

        if (ref($errref->{Error}) eq "ARRAY") {
            my @errors;
            for my $e (@{$errref->{Error}}) {
                return -1 if $e =~ /Valid values must be/;
                push @errors, $e->{Message};
            }
            # multiple errors, set arrary ref
            $res->messages( @errors );
        } else {
            # single error, create array
            return -1 if $errref->{Error}->{Message} =~ /Valid values must be/;
            $res->messages( [ $errref->{Error}->{Message} ] );
        }

        ERROR("Fetch Error: " . $res->message );
        $res->status("");
        return 0;
    }

    return 1;
}

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

    return $self->SUPER::list_as_string($self->properties);
}

1;


syntax highlighted by Code2HTML, v. 0.9.1