NAME

   AnyEvent::Twitter::Stream - Receive Twitter streaming API in an event
   loop

SYNOPSIS

     use AnyEvent::Twitter::Stream;

     my $done = AE::cv;

     # receive updates from @following_ids
     my $listener = AnyEvent::Twitter::Stream->new(
         username => $user,
         password => $password,
         method   => "filter",  # "firehose" for everything, "sample" for sample timeline
         follow   => join(",", @following_ids), # numeric IDs
         on_tweet => sub {
             my $tweet = shift;
             warn "$tweet->{user}{screen_name}: $tweet->{text}\n";
         },
         on_keepalive => sub {
             warn "ping\n";
         },
         on_delete => sub {
             my ($tweet_id, $user_id) = @_; # callback executed when twitter send a delete notification
             ...
         },
         timeout => 45,
     );

     # track keywords
     my $guard = AnyEvent::Twitter::Stream->new(
         username => $user,
         password => $password,
         method   => "filter",
         track    => "Perl,Test,Music",
         on_tweet => sub { },
     );

     # to use OAuth authentication
     my $listener = AnyEvent::Twitter::Stream->new(
         consumer_key    => $consumer_key,
         consumer_secret => $consumer_secret,
         token           => $token,
         token_secret    => $token_secret,
         method          => "filter",
         track           => "...",
         on_tweet        => sub { ... },
     );

     $done->recv;

DESCRIPTION

   AnyEvent::Twitter::Stream is an AnyEvent user to receive Twitter
   streaming API, available at http://dev.twitter.com/pages/streaming_api
   and http://dev.twitter.com/pages/user_streams.

   See "track.pl" in eg for more client code example.

METHODS

my $streamer = AnyEvent::Twitter::Stream->new(%args);

   username password

     These arguments are used for basic authentication.

   consumer_key consumer_secret token token_secret

     If you want to use the OAuth authentication mechanism, you need to
     set these arguments

   method

     The name of the method you want to use on the stream. Currently, any
     one of :

     firehose

     sample

     userstream

       To use this method, you need to use the OAuth mechanism.

     filter

       With this method you can specify what you want to filter amongst
       track, follow and locations.

       See https://dev.twitter.com/docs/api/1.1/post/statuses/filter for
       the details of the parameters.

   api_url

     Pass this to override the default URL for the API endpoint.

   request_method

     Pass this to override the default HTTP request method.

   timeout

     Set the timeout value.

   on_connect

     Callback to execute when a stream is connected.

   on_tweet

     Callback to execute when a new tweet is received. The argument is the
     tweet, a hashref documented at
     https://dev.twitter.com/docs/api/1/get/statuses/show/%3Aid.

   on_error

   on_eof

   on_keepalive

   on_delete

     Callback to execute when the stream send a delete notification.

   on_friends

     Only with the usertream method. Callback to execute when the stream
     send a list of friends.

   on_direct_message

     Only with the usertream method. Callback to execute when a direct
     message is received in the stream.

   on_event

     Only with the userstream method. Callback to execute when the stream
     send an event notification (follow, ...).

   additional agruments

     Any additional arguments are assumed to be parameters to the
     underlying API method and are passed to Twitter.

NOTES

   To use the userstream method, Twitter recommend using the HTTPS
   protocol. For this, you need to set the ANYEVENT_TWITTER_STREAM_SSL
   environment variable, and install the Net::SSLeay module.

AUTHOR

   Tatsuhiko Miyagawa <[email protected]>

LICENSE

   This library is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.

SEE ALSO

   AnyEvent::Twitter, Net::Twitter::Stream