Amazon-MWS
view release on metacpan or search on metacpan
lib/Amazon/MWS/Client.pm view on Meta::CPAN
1;
__END__
=head1 NAME
Amazon::MWS::Client
=head1 DESCRIPTION
An API binding for Amazon's Marketplace Web Services. An overview of the
entire interface can be found at L<https://mws.amazon.com/docs/devGuide>.
=head1 METHODS
=head2 new
Constructs a new client object. Takes the following keyword arguments:
=head3 agent_attributes
lib/Amazon/MWS/Uploader.pm view on Meta::CPAN
}
}
else {
die "Argument must be either a scalar with a job name and/or "
. "an hashref with additional filters!";
}
}
if (@named_jobs) {
$additional{amws_job_id} = { -in => \@named_jobs };
}
my ($stmt, @bind) = $self->sqla->select(amazon_mws_jobs => '*',
{
%additional,
aborted => 0,
success => 0,
shop_id => $self->_unique_shop_id,
},
{ -asc => 'job_started_epoch'});
my $pending = $self->_exe_query($stmt, @bind);
my %jobs;
while (my $row = $pending->fetchrow_hashref) {
$jobs{$row->{task}} ||= [];
push @{$jobs{$row->{task}}}, $row;
}
my @out;
foreach my $task (qw/product_deletion upload shipping_confirmation order_ack/) {
if (my $list = delete $jobs{$task}) {
if ($task eq 'order_ack') {
for (1..2) {
lib/Amazon/MWS/Uploader.pm view on Meta::CPAN
=cut
sub process_feeds {
my ($self, $row) = @_;
# print Dumper($row);
# upload the feeds one by one and stop if something is blocking
my $job_id = $row->{amws_job_id};
print "Processing job $job_id\n";
# query the feeds table for this job
my ($stmt, @bind) = $self->sqla->select(amazon_mws_feeds => '*',
{
amws_job_id => $job_id,
aborted => 0,
success => 0,
shop_id => $self->_unique_shop_id,
},
['amws_feed_pk']);
my $sth = $self->_exe_query($stmt, @bind);
my $unfinished;
while (my $feed = $sth->fetchrow_hashref) {
last unless $self->upload_feed($feed);
}
$sth->finish;
($stmt, @bind) = $self->sqla->select(amazon_mws_feeds => '*',
{
shop_id => $self->_unique_shop_id,
amws_job_id => $job_id,
});
$sth = $self->_exe_query($stmt, @bind);
my ($total, $success, $aborted) = (0, 0, 0);
# query again and check if we have aborted jobs;
while (my $feed = $sth->fetchrow_hashref) {
$total++;
$success++ if $feed->{success};
$aborted++ if $feed->{aborted};
}
lib/Amazon/MWS/Uploader.pm view on Meta::CPAN
}
# and we stop this job, has errors
return 0;
}
}
return $record->{success};
}
sub _exe_query {
my ($self, $stmt, @bind) = @_;
my $sth = $self->dbh->prepare($stmt);
print $stmt, Dumper(\@bind) if DEBUG;
eval {
$sth->execute(@bind);
};
if ($@) {
die "Failed to execute $stmt with params" . Dumper(\@bind);
}
return $sth;
}
sub _check_processing_complete {
my ($self, $feed_id, $type) = @_;
my $res;
try {
$res = $self->client->GetFeedSubmissionList;
} catch {
( run in 1.263 second using v1.01-cache-2.11-cpan-2398b32b56e )