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;
}
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;
});
},
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(
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 )