Bio-Phylo-CIPRES
view release on metacpan or search on metacpan
lib/Bio/Phylo/CIPRES.pm view on Meta::CPAN
my $self = shift;
my $ua = $self->ua;
my $url = $self->url;
my $load = $self->payload;
my @head = $self->headers(1);
my $res = $ua->post( $url . '/job/' . $self->user, $load, @head );
if ( $res->is_success ) {
# run submission, parse result
my $status_url;
my $result = $res->decoded_content;
DEBUG $result;
XML::Twig->new(
'twig_handlers' => {
'jobstatus/selfUri/url' => sub { $status_url = $_->text }
}
)->parse($result);
INFO "Job launched at $status_url";
return $status_url;
}
else {
lib/Bio/Phylo/CIPRES.pm view on Meta::CPAN
sub check_status {
my ( $self, $url ) = @_;
INFO "Going to check status for $url";
my $ua = $self->ua;
my @head = $self->headers(0);
my $res = $ua->get( $url, @head );
if ( $res->is_success ) {
# post request, fetch result
my ( $status, $outfiles );
my $result = $res->decoded_content;
DEBUG $result;
XML::Twig->new(
'twig_handlers' => {
'jobstatus/resultsUri/url' => sub { $outfiles = $_->text },
'jobstatus/terminalStage' => sub { $status = $_->text }
}
)->parse($result);
my $time = localtime();
INFO "[$time] completed: $status";
return { 'completed' => $status, 'outfiles' => $outfiles };
lib/Bio/Phylo/CIPRES.pm view on Meta::CPAN
=cut
sub get_results {
my ( $self, $url ) = @_;
my %out = %{ $self->outfile };
my $ua = $self->ua;
my @head = $self->headers(0);
my $res = $ua->get( $url, @head );
my %out_url;
if ( $res->is_success ) {
my $result = $res->decoded_content;
DEBUG $result;
XML::Twig->new(
'twig_handlers' => {
'results/jobfiles/jobfile' => sub {
my $node = $_;
my $name = $node->findvalue('filename');
if ( $out{ $name } ) {
$out_url{ $name } = $node->findvalue('downloadUri/url');
}
DEBUG $node->toString;
}
}
)->parse($result);
for my $name ( keys %out ) {
my $location = $out_url{ $name };
$res = $ua->get( $location, @head );
if ( $res->is_success ) {
open my $fh, '>', $out{ $name } or die $!;
print $fh $res->decoded_content;
}
else {
throw 'NetworkError' => $res->status_line;
}
}
}
else {
throw 'NetworkError' => $res->status_line;
}
}
( run in 0.666 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )