AI-CleverbotIO
view release on metacpan or search on metacpan
lib/AI/CleverbotIO.pm view on Meta::CPAN
my $self = shift;
$self->nick(shift) if @_;
# build request parameters
my %ps = (
key => $self->key,
user => $self->user,
);
$ps{nick} = $self->nick if $self->has_nick && length $self->nick;
my $data =
$self->_parse_response(
$self->ua->post_form($self->endpoints->{create}, \%ps));
$self->nick($data->{nick}) if exists($data->{nick});
return $data;
}
sub _parse_response {
my ($self, $response) = @_;
{
local $Data::Dumper::Indent = 1;
$self->logger->debug('got response: ' . Dumper($response));
}
ouch 500, 'no response (possible bug in HTTP::Tiny though?)'
unless ref($response) eq 'HASH';
my $status = $response->{status};
ouch $status, $response->{reason}
if ($status != 200) && ($status != 400);
my $data = __decode_content($response);
return $data if $response->{success};
ouch 400, $data->{status};
} ## end sub _parse_response
sub __decode_content {
my $response = shift;
my $encoded = $response->{content};
if (!$encoded) {
my $url = $response->{url} // '*unknown url, check HTTP::Tiny*';
ouch 500, "response status $response->{status}, nothing from $url)";
}
my $decoded = eval { decode_json($encoded) }
t/01-basic.t view on Meta::CPAN
$cleverbot = AI::CleverbotIO->new(
key => $ENV{CLEVERBOT_API_KEY},
nick => $ENV{CLEVERBOT_NICK} // "AI::CleverbotIO Tester",
user => $ENV{CLEVERBOT_API_USER},
);
} ## end lives_ok
'AI::CleverbotIO instantiation lives';
isa_ok $cleverbot, 'AI::CleverbotIO';
my $data;
lives_ok {
$data = $cleverbot->create();
}
'create() lives';
like $data->{status}, qr{(?mxs:
\A
(?:
success
| Error:\ reference\ name\ already\ exists
)
\z
)}, 'create() outcome';
diag 'real nick: ' . $cleverbot->nick;
( run in 0.244 second using v1.01-cache-2.11-cpan-8d75d55dd25 )