Cmd-Dwarf
view release on metacpan or search on metacpan
share/app/lib/Dwarf/Module/SocialMedia/Weibo.pm view on Meta::CPAN
return $self->call('friendships/create', 'POST', {
screen_name => $target_screen_name
});
}
sub is_following {
my ($self, $target_screen_name) = @_;
my $data = $self->call('friendships/show', 'GET', {
source_id => $self->user_id,
target_screen_name => $target_screen_name,
});
return $data->{source}->{following} ? 1 : 0;
}
sub get_rate_limit_status {
my ($self) = @_;
return $self->call('account/rate_limit_status', 'GET');
}
sub show_user {
my ($self, $id) = @_;
$id ||= $self->user_id;
return $self->call('users/show', 'GET', { uid => $id });
}
sub get_timeline {
my ($self, $id, $data) = @_;
$id ||= $self->user_id;
$data ||= {};
$data->{uid} = $id;
my $res = $self->call('statuses/user_timeline', 'GET', $data);
if (ref $res eq 'HASH') {
return $res->{statuses};
}
return [];
}
sub get_mentions {
my ($self, $id, $data) = @_;
$id ||= $self->user_id;
$data ||= {};
$data->{uid} = $id;
my $res = $self->call('statuses/mentions', 'GET', $data);
if (ref $res eq 'HASH') {
return $res->{statuses};
}
return [];
}
sub get_direct_messages {
my ($self, $id) = @_;
$id ||= $self->user_id;
die "This method has not implemented yet.";
return;
}
sub get_friends_ids {
my ($self, $id) = @_;
$id ||= $self->user_id;
my $cursor = -1;
my @ids;
while ($cursor != 0) {
my $result = $self->call('friendships/friends/ids', 'GET', {
uid => $id,
cursor => $cursor,
});
$cursor = $result->{next_cursor};
push @ids, @{ $result->{ids} };
}
return \@ids;
}
sub get_followers_ids {
my $self = shift;
die "This method has not implemented yet.";
return;
}
sub lookup_users {
my ($self, $ids, $rows, $offset) = @_;
$offset ||= 0;
die "This method has not implemented yet.";
return;
}
sub get_authorization_url {
my ($self, %params) = @_;
die 'key must be specified.' unless defined $self->key;
die 'secret must be specified.' unless defined $self->secret;
die "redirect_uri must be specified." unless defined $params{redirect_uri};
$params{client_id} ||= $self->key;
$params{response_type} ||= 'code';
my $uri = URI->new($self->urls->{authorization});
$uri->query_form(%params);
return $uri;
}
sub request_access_token {
my ($self, %params) = @_;
die 'key must be specified.' unless defined $self->key;
die 'secret must be specified.' unless defined $self->secret;
die "redirect_uri must be specified." unless defined $params{redirect_uri};
die "code must be specified." unless defined $params{code};
$params{client_id} ||= $self->key;
$params{client_secret} ||= $self->secret;
$params{grant_type} ||= 'authorization_code';
my $uri = URI->new($self->urls->{access_token});
$uri->query_form(%params);
my $res = $self->ua->post($uri);
$self->validate($res);
my $json = $res->content;
my $data = eval { decode_json($json) };
if ($@) {
warn $data;
}
$self->access_token($data->{access_token});
$self->expires_in($data->{expires_in});
( run in 4.167 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )