NAME

WWW::Contact - Get contacts/addressbook from Web

SYNOPSIS

    use WWW::Contact;
    use Data::Dumper;

    # Get contacts from email providers.
    my $wc       = WWW::Contact->new();
    my @contacts = $wc->get_contacts('fayland@gmail.com', 'password');
    my $errstr   = $wc->errstr;
    if ($errstr) {
        die $errstr; # like 'Wrong Username or Password'
    } else {
        print Dumper(\@contacts);
    }

    # Get contacts from social networks (eg: Plaxo)
    my $ws       = WWW::Contact->new();
    # Note that the last argument for get_contacts() is mandatory,
    # or else it will try to fetch contacts from gmail.com
    my @contacts = $ws->get_contacts('itsa@gmail.com', 'password', 'plaxo');
    my $errstr   = $ws->errstr;
    if ($errstr) {
        die $errstr; # like 'Wrong Username or Password'
    } else {
        print Dumper(\@contacts);
    }

DESCRIPTION

Get contacts/addressbook from public websites

SUPPORTED EMAIL SUPPLIER

Gmail

WWW::Contact::Gmail by Fayland Lam, DEPRECATED for WWW::Contact::GoogleContactsAPI

Yahoo! Mail

WWW::Contact::Yahoo by Fayland Lam

Rediffmail

WWW::Contact::Rediffmail by Sachin Sebastian

mail.163.com

WWW::Contact::CN::163 by Fayland Lam

AOL

WWW::Contact::AOL by Fayland Lam

Mail

WWW::Contact::Mail by Sachin Sebastian

Hotmail/Live Mail

WWW::Contact::Hotmail by Fayland Lam

Indiatimes

WWW::Contact::Indiatimes by Sachin Sebastian

Lycos

WWW::Contact::Lycos by Sachin Sebastian

Plaxo

WWW::Contact::Plaxo by Sachin Sebastian

GoogleContactsAPI

WWW::Contact::GoogleContactsAPI by Fayland Lam, using Google Contacts Data API

abv.bg

WWW::Contact::BG::Abv by Dimitar Petrov

mail.bg

WWW::Contact::BG::Mail by Dimitar Petrov

METHODS

register_supplier

To use custom supplier, we must register within WWW::Contact

    $wc->register_supplier( qr/\@a\.com$/, 'Unknown' );
    $wc->register_supplier( 'a.com', 'Unknown' );

The first arg is a Regexp or domain from email postfix. The second arg is the according module postfix like 'Unknown' from WWW::Contact::Unknown

get_supplier_by_email

get supplier by email.

    my $supplier = $wc->get_supplier_by_email('a@gmail.com'); # 'GoogleContactsAPI'
    my $supplier = $wc->get_supplier_by_email('a@a.com');     # 'Unknown'

get_supplier_by_socialnetwork

get supplier by social network name.

    my $supplier = $wc->get_supplier_by_socialnetwork('plaxo'); # 'Plaxo'

HOW TO WRITE YOUR OWN MODULE

Please read WWW::Contact::Base and examples: WWW::Contact::Yahoo and WWW::Contact::Plaxo

Assuming we write a custom module as WWW::Contact::Unknown

    package WWW::Contact::Unknown;

    use Moose;
    extends 'WWW::Contact::Base';

    sub get_contacts {
        my ($self, $email, $password) = @_;

        # reset
        $self->errstr(undef);

        if ($email eq 'a@a.com' and $password ne 'a') {
            $self->errstr('Wrong Username or Password');
            return;
        }

        my @contacts = ( {
            email => 'b@b.com',
            name => 'b',
        }, {
            email => 'c@c.com',
            name => 'c'
        } );
        return wantarray ? @contacts : \@contacts;
    }

    1;

We can use it within WWW::Contact

    my $wc = WWW::Contact->new();
    $wc->register_supplier( qr/\@a\.com$/, 'Unknown' );
    # or
    # $wc->register_supplier( 'a.com', 'Unknown' );

    my @contacts = $wc->get_contacts('a@a.com', 'b');
    my $errstr = $wc->errstr;

SEE ALSO

WWW::Mechanize, Moose

SUPPORTS

Code trunk

http://github.com/fayland/perl-www-contact/tree/master

Group

http://groups.google.com/group/perl-www-contact

AUTHOR

Fayland Lam, <fayland at gmail.com>

Sachin Sebastian, <sachinjsk at cpan.org>

Dimitar Petrov, <mitakaa at gmail.com>

COPYRIGHT & LICENSE

Copyright 2008 *AUTHOR* all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.