NAME

Bot::ChatBots::Role::WebPoller - Bot::ChatBots Role for Web Pollers

SYNOPSIS

package Something;
use Moo;
with 'Bot::ChatBots::Role::WebPoller';

sub parse_response {
   my ($self, $data) = @_;
   ...
}

sub normalize_record {
   my ($self, $record) = @_;
   ...
}
1;

# later that night...
my $something = Something->new(
   interval => 30, # polling interval, from Poller
   ua => Mojo::UserAgent->new, # optional, with your options
   tx_args => [qw< get http://example.com/whatever >],
   processor => \&process_record,
);
Mojo::IOLoop->start;

DESCRIPTION

This is a poller role for bots, polling from URLs. This role is actually a derivation of Bot::ChatBots::Role::Poller, adding a "poll" method that implements what needed for fetching data via HTTP/HTTPS asynchronously.

You MUST provide tx_args upon construction, pointing to an array reference containing all parameters for fetching data. The contents of the array is a list compatible with "build_tx" in Mojo::UserAgent.

You can optionally configure a specific Mojo::UserAgent as the ua parameter, e.g. if you want to set specific parameters like a timeout.

What Should You Provide/Override

Whatever needed by Bot::ChatBots::Role::Poller, except for "poll" that is provided.

METHODS

It should be safe to override the following methods in your classes composing this role.

poll

$obj->poll($callback, $args);

Fetches new data using the user agent "ua" and fetching data with the request contained in "tx_args".

tx_args

my $array_ref = $obj->tx_args;

Get an array ref with the "instructions" for fetching new data. Refer to "build_tx" in Mojo::UserAgent, because it is used like this:

my $tx = $ua->build_tx(@$array_ref);

ua

my $ua = $obj->ua;

Get the user agent object.

REQUIRED METHODS

See Bot::ChatBots::Role::Poller and Bot::ChatBots::Role::Source.

SEE ALSO

Bot::ChatBots, Bot::ChatBots::Role::Poller, Bot::ChatBots::Role::Source.

AUTHOR

Flavio Poletti <polettix@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2018 by Flavio Poletti <polettix@cpan.org>

This module is free software. You can redistribute it and/or modify it under the terms of the Artistic License 2.0.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.