Amazon-MWS
view release on metacpan or search on metacpan
lib/Amazon/MWS/Uploader.pm view on Meta::CPAN
if ($_->can('xml')) {
warn $_->xml;
}
else {
warn Dumper($_);
}
}
else {
warn $_;
}
};
# do not register the failure on die, because in this case (no
# response) there could be throttling, or network failure
die unless $res;
# update the feed_id row storing it and updating.
if ($feed_id = $record->{feed_id} = $res->{FeedSubmissionId}) {
$self->_exe_query($self->sqla
->update(amazon_mws_feeds => $record,
{
amws_feed_pk => $record->{amws_feed_pk},
shop_id => $self->_unique_shop_id,
}));
}
else {
# something is really wrong here, we have to die
die "Couldn't get a submission id, response is " . Dumper($res);
}
}
print "Feed is $feed_id\n";
if (!$record->{processing_complete}) {
if ($self->_check_processing_complete($feed_id, $type)) {
# update the record and set the flag to true
$self->_exe_query($self->sqla
->update('amazon_mws_feeds',
{ processing_complete => 1 },
{
feed_id => $feed_id,
shop_id => $self->_unique_shop_id,
}));
}
else {
print "Still processing\n";
return;
}
}
# check if we didn't already processed it
if (!$record->{aborted} || !$record->{success}) {
# we need a class to parse the result.
my $result = $self->submission_result($feed_id);
if ($result->is_success) {
$self->_exe_query($self->sqla
->update('amazon_mws_feeds',
{ success => 1 },
{
feed_id => $feed_id,
shop_id => $self->_unique_shop_id,
}));
# if we have a success, print the warnings on the stderr.
# if we have a failure, the warnings will just confuse us.
if ($type eq 'order_ack') {
# flip the confirmation bit
$self->_exe_query($self->sqla->update(amazon_mws_orders => { confirmed => 1 },
{ amws_job_id => $job_id,
shop_id => $self->_unique_shop_id }));
}
elsif ($type eq 'shipping_confirmation') {
$self->_exe_query($self->sqla->update(amazon_mws_orders => { shipping_confirmation_ok => 1 },
{ shipping_confirmation_job_id => $job_id,
shop_id => $self->_unique_shop_id }));
}
if (my $warn = $result->warnings) {
if (my $warns = $result->skus_warnings) {
foreach my $w (@$warns) {
$self->_error_logger(warning => $w->{code},
"$w->{sku}: $w->{error}");
# and register it in the db
if ($w->{sku} && $w->{error}) {
$self->_exe_query($self->sqla->update('amazon_mws_products',
{ warnings => "$job_id $w->{code} $w->{error}" },
{
sku => $w->{sku},
shop_id => $self->_unique_shop_id,
}));
}
}
}
else {
warn "$warn\n";
}
}
return 1;
}
else {
foreach my $err ($result->report_errors) {
$self->_error_logger($err->{type},
$err->{code},
$err->{message});
}
$self->_exe_query($self->sqla
->update('amazon_mws_feeds',
{
aborted => 1,
errors => $result->errors,
},
{
feed_id => $feed_id,
shop_id => $self->_unique_shop_id,
}));
$self->register_errors($job_id, $result);
if ($type eq 'order_ack') {
$self->register_order_ack_errors($job_id, $result);
}
elsif ($type eq 'shipping_confirmation') {
$self->register_ship_order_errors($job_id, $result);
}
( run in 1.774 second using v1.01-cache-2.11-cpan-39bf76dae61 )