AnyEvent-SparkBot
view release on metacpan or search on metacpan
lib/AnyEvent/SparkBot.pm view on Meta::CPAN
=cut
sub getLastConn : BENCHMARK_DEBUG {
my ($self)=@_;
my $lc=$self->lastConn;
if(-r $lc) {
my $fh=IO::File->new($lc,'r');
return $self->new_false("Could not open file: $lc, error was: $!") unless $fh;
my $str=join '',$fh->getlines;
$fh->close;
my $json=eval { from_json($str) };
if($@) {
return $self->new_false("Could not parse $lc, error was: $@");
}
return $self->new_true($json);
}
return $self->new_false("Could not read $lc");
}
=item * my $result=$self->saveLastConn($ref)
Saves the last conenction, returns a Data::Result Object
$ref is assumed to be the data strucutre intended to be serialzied into json
=cut
sub saveLastConn : BENCHMARK_DEBUG {
my ($self,$ref)=@_;
my $json=to_json($ref,{pretty=>1});
my $fh=IO::File->new($self->lastConn,'w');
return $self->new_false("Failed to create: [".$self->lastConn."] error was: [$!]") unless $fh;
$fh->print($json);
return $self->new_true($json);
}
=item * my $job_id=$self->que_deleteLastUrl($cb)
Returns a Data::Result Object, when true it contains the url that was deleted, when false it contains why it failed.
=cut
sub que_deleteLastUrl : BENCHMARK_INFO {
my ($self,$cb)=@_;
my $result=$self->getLastConn();
return $self->queue_result($cb,$result) unless $result;
my $json=$result->get_data;
return $self->queue_result($cb,$self->new_false('URL not found in json data strucutre')) unless exists $json->{url};
my $url=$json->{url};
my $req=new HTTP::Request(DELETE=>$url,$self->default_headers);
return $self->queue_request($req,$cb);
}
=item * my $job_id=$self->que_getWsUrl($cb)
Gets the WebSocket URL
Returns a Data::Result Object: When true it contains the url. When false it contains why it failed.
=cut
sub que_getWsUrl : BENCHMARK_INFO {
my ($self,$cb)=@_;
$self->que_deleteLastUrl(\&log_delete_call);
my $run_cb=sub {
my ($self,$id,$result)=@_;
if($result) {
my $json=$result->get_data;
$self->connInfo($json);
$self->saveLastConn($json);
}
$cb->(@_);
};
my $req=new HTTP::Request(POST=>$self->defaultUrl,$self->default_headers,$self->deviceDesc);
return $self->queue_request($req,$run_cb);
}
=item * $self->log_delete_call($id,$result)
Call back to handle logging clean up of previous session
=cut
sub log_delete_call : BENCHMARK_INFO {
my ($self,$id,$result)=@_;
if($result) {
$self->log_always("Removed old device object without error");
} else {
$self->log_always("Failed to remove old device, error was: $result");
}
}
=back
=head1 AUTHOR
Michael Shipper <AKALINUX@CPAN.ORG>
=cut
1;
( run in 0.614 second using v1.01-cache-2.11-cpan-39bf76dae61 )