Cmd-Dwarf
view release on metacpan or search on metacpan
examples/helloworld/app/lib/Dwarf/Module/SocialMedia/Twitter.pm view on Meta::CPAN
}
sub _build_profile_image {
my $self = shift;
$self->init_user unless defined $self->{profile_image};
return $self->{profile_image};
}
sub init_user {
my $self = shift;
my $user = $self->show_user;
$self->{user_id} = $user->{id};
$self->{screen_name} = $user->{screen_name};
$self->{name} = encode_utf8($user->{name});
$self->{profile_image} = encode_utf8($user->{profile_image_url});
}
sub authorized {
my ($self, $will_die) = @_;
$will_die ||= 1;
my $authorized = defined $self->access_token && defined $self->access_token_secret;
if ($will_die && !$authorized) {
$self->on_error("Unauthorized");
}
return $authorized;
}
sub is_login {
my ($self, $check_connection) = @_;
return 0 unless $self->authorized;
return 1 unless $check_connection;
my $data;
eval {
$data = $self->show_user;
};
if ($@) {
warn $@;
}
my $is_login = 0;
if (ref $data eq 'HASH') {
$is_login = 1;
$self->{user_id} = $data->{id};
$self->{screen_name} = $data->{screen_name};
$self->{name} = encode_utf8($data->{name});
$self->{profile_image} = encode_utf8($data->{profile_image_url});
}
return $is_login;
}
sub show_user {
my ($self, $id) = @_;
$id ||= $self->{user_id};
my $data;
unless ($self->{user_id}) {
$data = $self->call(
'account/verify_credentials',
'GET'
);
} else {
# accout/verify_credentials ãç¯ç´ããããã«
# users/lookup ã§ä»£æ¿åºæ¥ãã±ã¼ã¹ã§ã¯ä»£æ¿ãã
$data = $self->call('users/lookup', 'POST', { user_id => $id });
if (ref $data eq 'ARRAY') {
$data = $data->[0];
}
}
return $data;
}
sub publish {
my ($self, $message) = @_;
$self->call('statuses/update', 'POST', { status => $message });
}
sub reply {
my ($self, $in_reply_to_status_id, $message, $screen_name) = @_;
$message = "@" . $screen_name . " " . $message if defined $screen_name;
$self->call('statuses/update', 'POST', {
status => $message,
in_reply_to_status_id => $in_reply_to_status_id,
});
}
sub upload {
my ($self, $src, $message) = @_;
my $url = $self->urls->{api} . '/statuses/update_with_media.json';
my $oauth = Net::OAuth->request('protected resource')->new(
version => '1.0',
request_url => $url,
request_method => 'POST',
token => $self->access_token,
token_secret => $self->access_token_secret,
consumer_key => $self->key,
consumer_secret => $self->secret,
signature_method => 'HMAC-SHA1',
timestamp => time,
nonce => Digest::SHA::sha1_base64(time . $$ . rand),
);
$oauth->sign;
my $req = POST($url,
Content_type => 'multipart/form-data',
Authorization => $oauth->to_authorization_header,
Content => [
status => $message,
'media[]' => [ $src ]
],
);
my $res = $self->ua->request($req);
return $self->validate($res);
}
sub send_dm {
my ($self, $id, $text) = @_;
$self->call('direct_messages/new', 'POST', {
user_id => $id,
( run in 0.818 second using v1.01-cache-2.11-cpan-39bf76dae61 )