AnyEvent-Twitter-Stream

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

MANIFEST
META.json
META.yml
README
cpanfile
dist.ini
eg/track.pl
lib/AnyEvent/Twitter/Stream.pm
t/00_compile.t
t/author-pod-syntax.t
t/streaming.t
t/timeout.t
xt/perlcritic.t
xt/pod.t
xt/podspell.t
xt/synopsis.t

META.json  view on Meta::CPAN

{
   "abstract" : "Receive Twitter streaming API in an event loop",
   "author" : [
      "Tatsuhiko Miyagawa <miyagawa@bulknews.net>"
   ],
   "dynamic_config" : 0,
   "generated_by" : "Dist::Milla version v1.0.16, Dist::Zilla version 6.006, CPAN::Meta::Converter version 2.150005",
   "license" : [
      "perl_5"
   ],
   "meta-spec" : {
      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",

META.yml  view on Meta::CPAN

---
abstract: 'Receive Twitter streaming API in an event loop'
author:
  - 'Tatsuhiko Miyagawa <miyagawa@bulknews.net>'
build_requires:
  Test::More: '0'
  Test::Requires: '0'
  Test::TCP: '0'
configure_requires:
  Module::Build::Tiny: '0.034'
dynamic_config: 0
generated_by: 'Dist::Milla version v1.0.16, Dist::Zilla version 6.006, CPAN::Meta::Converter version 2.150005'

README  view on Meta::CPAN

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(

README  view on Meta::CPAN

          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

lib/AnyEvent/Twitter/Stream.pm  view on Meta::CPAN

=encoding utf-8

=for stopwords
API AnyEvent

=for test_synopsis
my($user, $password, @following_ids, $consumer_key, $consumer_secret, $token, $token_secret);

=head1 NAME

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

=head1 SYNOPSIS

  use AnyEvent::Twitter::Stream;
  
  my $done = AE::cv;

  # receive updates from @following_ids
  my $listener = AnyEvent::Twitter::Stream->new(
      username => $user,

lib/AnyEvent/Twitter/Stream.pm  view on Meta::CPAN

      token_secret    => $token_secret,
      method          => "filter",
      track           => "...",
      on_tweet        => sub { ... },
  );
  
  $done->recv;

=head1 DESCRIPTION

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

See L<eg/track.pl> for more client code example.

=head1 METHODS

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

=over 4

t/streaming.t  view on Meta::CPAN

                    is $event, 0, 'got no event';
                    is($received, $count_max + 1, "received");
                }

                is $destroyed, 1, 'destroyed';
            }
        },
        server => sub {
            my $port = shift;

            run_streaming_server($port, $enable_chunked);
        },
    );
}

done_testing();

sub run_streaming_server {
    my ($port, $enable_chunked) = @_;

    my $streaming = sub {
        my $env = shift;
        my $req = Plack::Request->new($env);

        return sub {
            my $respond = shift;

            my $writer = $respond->([200, [
                'Content-Type' => 'application/json',
                'Server' => 'Jetty(6.1.17)',
            ]]);

t/streaming.t  view on Meta::CPAN

    };

    my $app = builder {
        enable 'Auth::Basic', realm => 'Firehose', authenticator => sub {
            my ($user, $pass) = @_;

            return $user eq 'test' && $pass eq 's3cr3t';
        };
        enable 'Chunked' if $enable_chunked;

        mount '/1.1/statuses/' => $streaming;
        mount '/'              => $user_stream;
    };

    my $server = Plack::Handler::Twiggy->new(
        host => '127.0.0.1',
        port => $port,
    )->run($app);
}

t/timeout.t  view on Meta::CPAN

                $done->recv;
            }

            is($destroyed, 1, "$w: destroyed");
            is($received, $pattern{$w}, "received");
        }
    },
    server => sub {
        my $port = shift;

        run_streaming_server($port);
    },
);

done_testing();


sub run_streaming_server {
    my $port = shift;

    my $streaming = sub {
        my $env = shift;
        my $req = Plack::Request->new($env);

        my $track = $req->param('track');
        my (undef, $wait_a, $wait_b, $wait_c) = split(/_/, $track);

        return sub {
            my $respond = shift;

            my $count = 0;

t/timeout.t  view on Meta::CPAN

        };
    };


    my $app = builder {
        enable 'Auth::Basic', realm => 'Firehose', authenticator => sub {
            my ($user, $pass) = @_;

            return $user eq 'test' && $pass eq 's3cr3t';
        };
        mount '/1.1/' => $streaming;
    };

    my $server = Plack::Handler::Twiggy->new(
        host => '127.0.0.1',
        port => $port,
    )->run($app);
}



( run in 0.416 second using v1.01-cache-2.11-cpan-4d50c553e7e )