Cmd-Dwarf
view release on metacpan or search on metacpan
share/app/lib/Dwarf/Module/SocialMedia/Twitter.pm view on Meta::CPAN
package Dwarf::Module::SocialMedia::Twitter;
use Dwarf::Pragma;
use parent 'Dwarf::Module';
use Dwarf::HTTP::Async;
use Data::Dumper;
use DateTime;
use DateTime::Format::HTTP;
use Digest::SHA qw//;
use Encode qw/encode_utf8/;
use HTTP::Request::Common;
use HTTP::Response;
use JSON;
use LWP::UserAgent;
use Net::OAuth;
use Dwarf::Accessor qw/
ua ua_async urls
key secret
request_token request_token_secret
access_token access_token_secret
user_id screen_name name profile_image
on_error
/;
$Net::OAuth::PROTOCOL_VERSION = Net::OAuth::PROTOCOL_VERSION_1_0A;
sub init {
my $self = shift;
my $c = $self->c;
$self->{ua} ||= LWP::UserAgent->new(
timeout => 120
);
$self->{ua_async} ||= Dwarf::HTTP::Async->new;
$self->{urls} ||= {
api => 'https://api.twitter.com/1.1',
request_token => 'https://api.twitter.com/oauth/request_token',
authentication => 'https://api.twitter.com/oauth/authenticate',
authorization => 'https://api.twitter.com/oauth/authorize',
access_token => 'https://api.twitter.com/oauth/access_token',
};
$self->{on_error} ||= sub { die @_ };
}
sub _build_user_id {
my $self = shift;
$self->init_user unless defined $self->{user_id};
return $self->{user_id};
}
sub _build_screen_name {
my $self = shift;
$self->init_user unless defined $self->{screen_name};
return $self->{screen_name};
}
sub _build_name {
my $self = shift;
$self->init_user unless defined $self->{name};
return $self->{name};
}
sub _build_profile_image {
my $self = shift;
$self->init_user unless defined $self->{profile_image};
return $self->{profile_image};
}
( run in 1.177 second using v1.01-cache-2.11-cpan-d8267643d1d )