NAME
    WWW::Google::Contacts - Google Contacts Data API

VERSION
    version 0.04

SYNOPSIS
        use WWW::Google::Contacts;

        my $gcontacts = WWW::Google::Contacts->new();
        $gcontacts->login('fayland@gmail.com', 'pass') or die 'login failed';
    
        # create contact
        my $status = $gcontacts->create_contact( {
            givenName => 'FayTestG',
            familyName => 'FayTestF',
            fullName   => 'Fayland Lam',
            Notes     => 'just a note',
            primaryMail => 'primary@example.com',
            displayName => 'FayTest Dis',
            secondaryMail => 'secndary@test.com',
        } );
        print "Create OK" if $status;
    
        my @contacts = $gcontacts->get_contacts;
        foreach my $contact (@contacts) {
            my @emails = map { $_->{address} } @{ $contact->{email} };
            print "$contact->{name}->{'gd:fullName'}: " . join(', ', @emails) . "\n";
            $gcontacts->delete_contact($contact->{id})
                if $contact->{name}->{'gd:givenName'} eq 'Test';
        }

DESCRIPTION
    This module implements 'Google Contacts Data API' according
    <http://code.google.com/apis/contacts/docs/3.0/developers_guide_protocol
    .html>

  METHODS
    *   new/login

            my $gcontacts = WWW::Google::Contacts->new();
            $gcontacts->login('fayland@gmail.com', 'pass') or die 'login failed';

    *   create_contact

            $gcontacts->create_contact( {
                givenName => 'FayTestG',
                familyName => 'FayTestF',
                fullName   => 'Fayland Lam',
                Notes     => 'just a note',
                primaryMail => 'primary@example.com',
                displayName => 'FayTest Dis',
                secondaryMail => 'secndary@test.com',
            } );

        return 1 if created

    *   get_contacts

            my @contacts = $gcontacts->get_contacts;
            my @contacts = $gcontacts->get_contacts( {
                group => 'thin', # default to 'full'
            } )
            my @contacts = $gcontacts->get_contacts( {
                updated-min => '2007-03-16T00:00:00',
                start-index => 10,
                max-results => 99, # default as 9999
            } );

        get contacts from this account.

        "group" refers
        <http://code.google.com/apis/contacts/docs/2.0/reference.html#Projec
        tions>

        "start-index", "max_results" etc refer
        <http://code.google.com/apis/contacts/docs/2.0/reference.html#Parame
        ters>

    *   get_contact($id)

            my $contact = $gcontacts->get_contact('http://www.google.com/m8/feeds/contacts/account%40gmail.com/base/1');

        get a contact by id

    *   update_contact

            my $status = $gcontacts->update_contact('http://www.google.com/m8/feeds/contacts/account%40gmail.com/base/123623e48cb4e70a', {
                givenName => 'FayTestG2',
                familyName => 'FayTestF2',
                fullName   => 'Fayland Lam2',
                Notes     => 'just a note2',
                primaryMail => 'primary@example2.com',
                displayName => 'FayTest2 Dis',
                secondaryMail => 'secndary@test62.com',
            } );

        update a contact

    *   delete_contact($id)

            my $status = $gcontacts->delete_contact('http://www.google.com/m8/feeds/contacts/account%40gmail.com/base/1');

        The id is from "get_contacts".

    *   create_group

            my $status = $gcontacts->create_group( { title => 'Test Group' } );

        Create a new group

    *   get_groups

            my @groups = $gcontacts->get_groups;
            my @groups = $gcontacts->get_groups( {
                updated-min => '2007-03-16T00:00:00',
                start-index => 10,
                max-results => 99, # default as 9999
            } );

        Get all groups.

    *   get_group($id)

            my $group = $gcontacts->get_group('http://www.google.com/m8/feeds/groups/account%40gmail.com/base/6e744e7d0a4b398c');

        get a group by id

    *   update_group($id, { title => $title })

            my $status = $gcontacts->update_group( 'http://www.google.com/m8/feeds/groups/account%40gmail.com/base/6e744e7d0a4b398c', { title => 'New Test Group 66' } );

        Update a group

    *   delete_group

            my $status = $gcontacts->delete_contact('http://www.google.com/m8/feeds/groups/account%40gmail.com/base/6e744e7d0a4b398c');

  ACKNOWLEDGE
    John Clyde - who share me with his code about Contacts API

AUTHOR
      Fayland Lam <fayland@gmail.com>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2010 by Fayland Lam.

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

