AnyEvent-Twitter
view release on metacpan or search on metacpan
lib/AnyEvent/Twitter.pm view on Meta::CPAN
package AnyEvent::Twitter;
use strict;
use warnings;
use utf8;
use 5.008;
our $VERSION = '0.64';
use Carp;
use JSON;
use URI;
use URI::Escape;
use Digest::SHA;
use Time::Piece;
use AnyEvent::HTTP;
use HTTP::Request::Common 'POST';
use Data::Recursive::Encode;
use Net::OAuth;
use Net::OAuth::ProtectedResourceRequest;
use Net::OAuth::RequestTokenRequest;
use Net::OAuth::AccessTokenRequest;
$Net::OAuth::PROTOCOL_VERSION = Net::OAuth::PROTOCOL_VERSION_1_0A;
our %PATH = (
site => 'https://twitter.com/',
request_token => 'https://api.twitter.com/oauth/request_token',
authorize => 'https://api.twitter.com/oauth/authorize',
access_token => 'https://api.twitter.com/oauth/access_token',
authenticate => 'https://api.twitter.com/oauth/authenticate',
);
our %RESOURCE_URL_BASE = (
'1.0' => 'http://api.twitter.com/1/%s.json',
'1.1' => 'https://api.twitter.com/1.1/%s.json',
);
sub new {
my ($class, %args) = @_;
$args{api_version} ||= '1.1';
$args{access_token} ||= $args{token};
$args{access_token_secret} ||= $args{token_secret};
my @required = qw(access_token access_token_secret consumer_key consumer_secret);
for my $item (@required) {
defined $args{$item} or Carp::croak "$item is required";
}
return bless { %args }, $class;
}
sub get {
my $cb = pop;
my ($self, $endpoint, $params) = @_;
my $type = $endpoint =~ /^http.+\.json$/ ? 'url' : 'api';
$self->request($type => $endpoint, method => 'GET', params => $params, $cb);
return $self;
}
sub post {
my ($self, $endpoint, $params, $cb) = @_;
my $type = $endpoint =~ /^http.+\.json$/ ? 'url' : 'api';
$self->request($type => $endpoint, method => 'POST', params => $params, $cb);
return $self;
}
sub request {
my $cb = pop;
my ($self, %opt) = @_;
( run in 1.433 second using v1.01-cache-2.11-cpan-bbcb1afb8fc )