The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
NAME
    AnyEvent::Twitter::Stream - Receive Twitter streaming API in an event
    loop

SYNOPSIS
      use AnyEvent::Twitter::Stream;

      # 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 { ... },
      );

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 use arguments

    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,
        anyone 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.

    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 <miyagawa@bulknews.net>

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