AnyEvent-Twitter

 view release on metacpan or  search on metacpan

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

    # or, if you use eg/gen_token.pl, you can write simply as:

    my $json_text = slurp 'config.json';
    my $config    = JSON::decode_json($json_text);
    my $ua = AnyEvent::Twitter->new(%$config);

    my $cv = AE::cv;

    # GET request
    $cv->begin;
    $ua->get('account/verify_credentials', sub {
        my ($header, $response, $reason) = @_;

        say $response->{screen_name};
        $cv->end;
    });

    # GET request with parameters
    $cv->begin;
    $ua->get('account/verify_credentials', {
        include_entities => 1
    }, sub {
        my ($header, $response, $reason) = @_;

        say $response->{screen_name};
        $cv->end;
    });

    # POST request with parameters
    $cv->begin;

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

        my ($header, $response, $reason) = @_;

        say $response->{user}{screen_name};
        $cv->end;
    });

    # verbose and old style
    $cv->begin;
    $ua->request(
        method => 'GET',
        api    => 'account/verify_credentials',
        sub {
            my ($hdr, $res, $reason) = @_;

            if ($res) {
                print "ratelimit-remaining : ", $hdr->{'x-ratelimit-remaining'}, "\n",
                      "x-ratelimit-reset   : ", $hdr->{'x-ratelimit-reset'}, "\n",
                      "screen_name         : ", $res->{screen_name}, "\n";
            } else {
                say $reason;
            }

xt/get.t  view on Meta::CPAN

        api_version     => '1.0',
        token           => $config->{access_token},
        token_secret    => $config->{access_token_secret},
        consumer_key    => $config->{consumer_key},
        consumer_secret => $config->{consumer_secret},
    );

    my $cv = AE::cv;

    $cv->begin;
    $ua->get('account/verify_credentials', sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        $cv->end;
    });

    $cv->begin;
    $ua->get('http://api.twitter.com/1/account/verify_credentials.json', sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        $cv->end;
    });

    $cv->begin;
    $ua->get('account/verify_credentials', { include_entities => 1 }, sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        is(ref $res->{status}{entities}, 'HASH', 'include_entities');
        $cv->end;
    });

    $cv->begin;
    $ua->get('http://api.twitter.com/1/account/verify_credentials.json', { include_entities => 1 }, sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        is(ref $res->{status}{entities}, 'HASH', 'include_entities');
        $cv->end;
    });

    $cv->recv;
};

subtest 'v1.1' => sub {
    my $ua = AnyEvent::Twitter->new(
        api_version     => '1.1',
        token           => $config->{access_token},
        token_secret    => $config->{access_token_secret},
        consumer_key    => $config->{consumer_key},
        consumer_secret => $config->{consumer_secret},
    );

    my $cv = AE::cv;

    $cv->begin;
    $ua->get('account/verify_credentials', sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        $cv->end;
    });

    $cv->begin;
    $ua->get('https://api.twitter.com/1.1/account/verify_credentials.json', sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        $cv->end;
    });

    $cv->begin;
    $ua->get('account/verify_credentials', { include_entities => 1 }, sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        is(ref $res->{status}{entities}, 'HASH', 'include_entities');
        $cv->end;
    });

    $cv->begin;
    $ua->get('https://api.twitter.com/1.1/account/verify_credentials.json', { include_entities => 1 }, sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        is(ref $res->{status}{entities}, 'HASH', 'include_entities');
        $cv->end;
    });

    $cv->recv;
};

done_testing();

xt/get_request_token.t  view on Meta::CPAN

            like $token->{user_id}, qr/^\d+$/, 'user_id';
            is $token->{screen_name}, $config->{screen_name};

            my $twitty = AnyEvent::Twitter->new(
                consumer_key    => $config->{consumer_key},
                consumer_secret => $config->{consumer_secret},
                token           => $token->{oauth_token},
                token_secret    => $token->{oauth_token_secret},
            );

            $twitty->get('account/verify_credentials', sub {
                my ($header, $res) = @_;

                note Dumper $res;

                is $res->{id}, $token->{user_id};
                is $res->{screen_name}, $token->{screen_name};

                $cv->end;
            });
        },

xt/get_request_token.t  view on Meta::CPAN

            like $token->{user_id}, qr/^\d+$/, 'user_id';
            is $token->{screen_name}, $config->{screen_name};

            my $twitty = AnyEvent::Twitter->new(
                consumer_key    => $config->{consumer_key},
                consumer_secret => $config->{consumer_secret},
                token           => $token->{oauth_token},
                token_secret    => $token->{oauth_token_secret},
            );

            $twitty->get('account/verify_credentials', sub {
                my ($header, $res) = @_;

                note Dumper $res;

                is $res->{id}, $token->{user_id};
                is $res->{screen_name}, $token->{screen_name};

                $cv->end;
            });
        },

xt/post.t  view on Meta::CPAN

        token_secret    => $config->{access_token_secret},
        consumer_key    => $config->{consumer_key},
        consumer_secret => $config->{consumer_secret},
    );

    my $cv = AE::cv;

    $cv->begin;
    $ua->post('statuses/update', { status => 'いろはにほへと ' . time . rand }, sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{user}{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        $cv->end;
    });

    $cv->begin;
    $ua->post('http://api.twitter.com/1/statuses/update.json', { status => 'いろはにほへと ' . time . rand }, sub {
            my ($hdr, $res, $reason) = @_;
            is($res->{user}{screen_name}, $screen_name, "account/verify_credentials")
                or note explain \@_;
            $cv->end;
        }
    );

    $cv->recv;
};

subtest 'v1.1' => sub {
    my $ua = AnyEvent::Twitter->new(

xt/post.t  view on Meta::CPAN

        token_secret    => $config->{access_token_secret},
        consumer_key    => $config->{consumer_key},
        consumer_secret => $config->{consumer_secret},
    );

    my $cv = AE::cv;

    $cv->begin;
    $ua->post('statuses/update', { status => 'いろはにほへと ' . time .rand }, sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{user}{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        $cv->end;
    });

    $cv->begin;
    $ua->post('http://api.twitter.com/1.1/statuses/update.json', { status => 'いろはにほへと ' . time . rand }, sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{user}{screen_name}, $screen_name, "account/verify_credentials")
            or note explain \@_;
        $cv->end;
    });

    $cv->recv;
};

done_testing();

xt/request.t  view on Meta::CPAN

    my $ua = AnyEvent::Twitter->new(
        %$config,
        api_version => '1.0',
    );

    my $cv = AE::cv;

    $cv->begin;
    $ua->request(
        method => 'GET',
        api    => 'account/verify_credentials',
        sub {
            my ($hdr, $res, $reason) = @_;
            is($res->{screen_name}, $screen_name, "account/verify_credentials");
            $cv->end;
        }
    );

    $cv->begin;
    $ua->request(
        method => 'POST',
        api    => 'statuses/update',
        params => { status => '(#`ω´)クポー クポー via api ' . scalar(localtime) . __LINE__ },
        sub {

xt/request.t  view on Meta::CPAN

    my $ua = AnyEvent::Twitter->new(
        %$config,
        api_version => '1.1',
    );

    my $cv = AE::cv;

    $cv->begin;
    $ua->request(
        method => 'GET',
        api    => 'account/verify_credentials',
        sub {
            my ($hdr, $res, $reason) = @_;
            is($res->{screen_name}, $screen_name, "account/verify_credentials")
                or note explain \@_;
            $cv->end;
        }
    );

    $cv->begin;
    $ua->request(
        method => 'POST',
        api    => 'statuses/update',
        params => { status => '(#`ω´)クポー クポー via api ' . scalar(localtime) . __LINE__ },

xt/update_with_media.t  view on Meta::CPAN


    {
        no utf8;
        $cv->begin;
        $ua->post('statuses/update_with_media',
            [
                status => 'いろはにほへと ' . rand,
                'media[]' => [ undef, 'filename', Content => $image_1 ],
            ], sub {
            my ($hdr, $res, $reason) = @_;
            is($res->{user}{screen_name}, $screen_name, "account/verify_credentials");
            note explain \@_;
            $cv->end;
        });
    }

    $cv->begin;
    $ua->post('statuses/update_with_media',
        [
            status => 'いろはにほへと ' . time,
            'media[]' => [ undef, 'filename', Content => $image_1 ],
        ], sub {
        my ($hdr, $res, $reason) = @_;
        is($res->{user}{screen_name}, $screen_name, "account/verify_credentials");
        note explain \@_;
        $cv->end;
    });

    $cv->recv;
};

subtest 'multiple files' => sub {
    plan skip_all => 'not allowed us to upload multiple files yet';
};



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