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 )