App-MtAws
view release on metacpan or search on metacpan
lib/App/MtAws/ChildWorker.pm view on Meta::CPAN
my $r = $req->segment_download_job($data->{jobid}, $data->{tempfile}, $data->{filename}, $data->{position}, $data->{download_size});
confess "segment_download_job failed" unless $r;
$result = { response => $r };
$console_out = "Downloaded part of archive $data->{filename} at offset $data->{position}, size $data->{download_size}";
} elsif ($action eq 'inventory_download_job') {
my $req = App::MtAws::GlacierRequest->new($self->{options});
my ($r, $inventory_type) = $req->retrieval_download_to_memory($data->{job_id});
confess "inventory_download_job failed" unless $r;
$result = { response => !! $r, inventory_type => $inventory_type };
$result_attachmentref = \$r;
$console_out = "Downloaded inventory in ".($inventory_type eq INVENTORY_TYPE_JSON ? "JSON" : "CSV")." format";
} elsif ($action eq 'retrieve_archive') {
my $req = App::MtAws::GlacierRequest->new($self->{options});
my $r = $req->retrieve_archive( $data->{archive_id});
return "retrieve_archive failed" unless $r;
$result = {
journal_entry => {
type=> 'RETRIEVE_JOB',
'time' => $req->{last_request_time},
archive_id => $data->{archive_id},
job_id => $r,
}
};
$console_out = "Retrieved Archive $data->{archive_id}";
} elsif ($action eq 'retrieval_fetch_job') {
my $req = App::MtAws::GlacierRequest->new($self->{options});
my $r = $req->retrieval_fetch_job($data->{marker});
confess unless $r;
$result = { response => $r };
$console_out = "Retrieved Job List";
} elsif ($action eq 'inventory_fetch_job') {
my $req = App::MtAws::GlacierRequest->new($self->{options});
my $r = $req->retrieval_fetch_job($data->{marker});
confess unless $r;
$result = { response => $r };
$console_out = "Fetched job list for inventory retrieval";
} elsif ($action eq 'retrieve_inventory_job') {
my $req = App::MtAws::GlacierRequest->new($self->{options});
my $r = $req->retrieve_inventory($data->{format});
confess unless $r;
$result = { job_id => $r };
$console_out = "Retrieved Inventory, job id $r";
} elsif ($action eq 'create_vault_job') {
my $req = App::MtAws::GlacierRequest->new($self->{options});
my $r = $req->create_vault($data->{name});
confess unless $r;
$result = { };
$console_out = "Created vault $data->{name}";
} elsif ($action eq 'delete_vault_job') {
my $req = App::MtAws::GlacierRequest->new($self->{options});
my $r = $req->delete_vault($data->{name});
confess unless $r;
$result = { };
$console_out = "Deleted vault $data->{name}";
} elsif ($action eq 'list_vaults') {
my $req = App::MtAws::GlacierRequest->new($self->{options});
my $r = $req->list_vaults($data->{marker});
confess unless $r;
$result = { response => $r };
$console_out = "Getting vault list (".($data->{marker} ? "next page: $data->{marker}" : "first page").")";
} elsif ($action eq 'verify_file') {
my $th = App::MtAws::TreeHash->new();
my $binaryfilename = binaryfilename $data->{filename};
die exception file_is_zero => "File size is zero (and it was not when we read directory listing). Filename: %string filename%",
filename => $data->{filename}
unless -s $binaryfilename;
open_file(my $F, $data->{filename}, mode => '<', binary => 1) or
die exception upload_file_open_error => "Unable to open task file %string filename% for reading, errno=%errno%",
filename => $data->{filename}, 'ERRNO'; # TODO: test
$th->eat_file($F);
close $F or confess;
$th->calc_tree();
my $treehash = $th->get_final_hash();
if ($treehash eq $data->{treehash}) {
$result = { match => 1 };
$console_out = "Checked treehash for $data->{filename} - MATCH";
} else {
$result = { match => 0 };
$console_out = "Checked treehash for $data->{filename} - DOES NOT MATCH";
}
} else {
die $action;
}
return ($result, $result_attachmentref, $console_out);
}
sub comm_error
{
# error message useless here
exit(1);
}
1;
( run in 0.417 second using v1.01-cache-2.11-cpan-13bb782fe5a )