| Net-Social-Service-Twitter documentation | Contained in the Net-Social-Service-Twitter distribution. |
Net::Social::Service::Twitter - handle friends from Twitter for Net::Social
Net:Social::Service::Twitter returns a list of friends that you have on the Twitter service.
use Net::Social;
my $site = Net::Social->site("Twitter");
$site->login(%params}) || die "Need username and password";
my @friends = $site-friends;
Describes the required parameters for logging in (for Twitter, username and password).
Returns your friends. It defines the keys username, name and type.
Add a friend.
Takes a Twitter friend as returned by the friends() method.
Returns 1 on success or 0 on failure.
Delete a friend.
Takes a Twitter friend as returned by the friends() method.
Returns 1 on success 0 on failure.
This module uses Net::Twitter, so you'll need that (and JSON::Any). You'll also need Net::Social.
The 'friends' API method only returns the last 100 users to have updated. In the event you're free and easy with friending users, there appears to be no way of finding out who all of them are, at least not from the API.
Paul Mison <cpan@husk.org> Simon Wistow <simon@thegestalt.org>
Copyright 2007, Paul Mison and Simon Wistow
Released under the same terms as Perl itself.
| Net-Social-Service-Twitter documentation | Contained in the Net-Social-Service-Twitter distribution. |
package Net::Social::Service::Twitter; use strict;
our $VERSION = '0.1'; use base qw(Net::Social::Service); use Carp qw(cluck); use Net::Twitter; use Net::Social qw(:all);
sub params {( 'write' => { "username" => { required => 1, description => "Your Twitter username", }, "password" => { required => 1, description => "Your Twitter password", }, }, )}
sub friends { my $self = shift; my $twit = $self->_make_twit() || return (); my %friends = (); my @constants = (FRIENDED, FRIENDED_BY); foreach my $what (qw(following followers)){ my $type = shift @constants; my $people = eval { $twit->$what() }; if ($@ or !$people) { cluck "There was a problem getting the '$what' list from Twitter"; return (); } foreach my $person (@{$people}) { my $user = $person->{screen_name}; my $name = $person->{name}; my $info = $friends{$name} || { username => $user, name => $name }; $info->{type} |= $type; $friends{$name} = $info; } } return values %friends; } sub _make_twit { my $self = shift; return undef unless $self->{_logged_in}; my $user = $self->{_details}->{username}; my $pass = $self->{_details}->{password}; return Net::Twitter->new( username => $user, password => $pass ); }
sub add_friend { my $self = shift; my $twit = $self->_make_twit || return 0; my $friend = shift || return 0; return 0 unless defined $friend->{username}; my $res = $twit->follow($friend->{username}); return defined $res; }
sub delete_friend { my $self = shift; my $twit = $self->_make_twit || return 0; my $friend = shift || return 0; return 0 unless defined $friend->{username}; my $res = $twit->stop_following($friend->{username}); return defined $res; }
23;