MojoX-Twitter

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

Revision history for MojoX-Twitter

0.07  2022-06-09 11:00:14 CST
        - upgrade Mojolicious to 9.21

0.06  2016-09-23 22:00:59 CST
        - support streaming

0.05  2016-09-05 13:25:52 CST
        - in case there is no X-Rate-Limit-Remaining in header

0.04  2016-09-05 12:49:30 CST
        - fix sign

0.03  2016-09-05 12:44:36 CST
        - redo with 429

MANIFEST  view on Meta::CPAN

# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.024.
Build.PL
Changes
LICENSE
MANIFEST
META.json
META.yml
README
cpanfile
dist.ini
examples/streaming.pl
examples/users_search.pl
lib/MojoX/Twitter.pm
t/author-pod-syntax.t
t/basic.t

README  view on Meta::CPAN

    
        my $twitter = MojoX::Twitter->new(
            consumer_key    => 'x',
            consumer_secret => 'z',
            access_token        => '1-z',
            access_token_secret => 'x',
        );
    
        my $users = $twitter->request('GET', 'users/show', { screen_name => 'support' });
    
        ## streaming
        $twitter->streaming('https://userstream.twitter.com/1.1/user.json', { with => 'followings' }, sub {
            my ($tweet) = @_;
            say Dumper(\$tweet);
        });

DESCRIPTION

    MojoX::Twitter is a simple Twitter client:

      * without OAuth authentication

examples/streaming.pl  view on Meta::CPAN

use lib "$Bin/../lib";
use MojoX::Twitter;
use Data::Dumper;

my $twitter = MojoX::Twitter->new(
    consumer_key    => 'z',
    consumer_secret => 'x',
    access_token        => '1-z',
    access_token_secret => 'x',
);
$twitter->streaming('https://userstream.twitter.com/1.1/user.json', { with => 'followings' }, sub {
    my ($tweet) = @_;
    say Dumper(\$tweet);
});

lib/MojoX/Twitter.pm  view on Meta::CPAN

            return $self->request($method, $command, $params); # REDO
        }

        croak "$err->{code} response: $err->{message}" if $err->{code};
        croak "Connection error: $err->{message}";
    }

    return $res->json;
}

sub streaming {
    my ($self, $url, $params, $callback) = @_;

    my $auth_str = $self->__build_auth_header('GET', $url, $params);

    if ($params) {
        my $uri = Mojo::URL->new($url);
        $uri->query($params);
        $url = $uri->to_string();
    }

lib/MojoX/Twitter.pm  view on Meta::CPAN

    my $tx = $self->ua->build_tx(GET => $url => {
        Authorization => "OAuth $auth_str"
    });
    $tx->res->max_message_size(0);

    # Replace "read" events to disable default content parser
    my $input;
    $tx->res->content->unsubscribe('read')->on(read => sub {
        my ($content, $bytes) = @_;

        # https://dev.twitter.com/streaming/overview/processing
        # The body of a streaming API response consists of a series of newline-delimited messages, where “newline” is considered to be \r\n (in hex, 0x0D 0x0A) and “message” is a JSON encoded data structure or a blank line.
        $input .= $bytes;
        while ($input =~ s/^(.*?)\r\n//) {
            my ($json_raw) = $1;
            if (length($json_raw)) {
                $callback->(j($json_raw));
            }
        }
    });

    # Process transaction

lib/MojoX/Twitter.pm  view on Meta::CPAN


    my $twitter = MojoX::Twitter->new(
        consumer_key    => 'x',
        consumer_secret => 'z',
        access_token        => '1-z',
        access_token_secret => 'x',
    );

    my $users = $twitter->request('GET', 'users/show', { screen_name => 'support' });

    ## streaming
    $twitter->streaming('https://userstream.twitter.com/1.1/user.json', { with => 'followings' }, sub {
        my ($tweet) = @_;
        say Dumper(\$tweet);
    });

=head1 DESCRIPTION

MojoX::Twitter is a simple Twitter client:

=over 4



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