public
Description: Ruby library for consuming Google, Yahoo!, Flickr and Windows Live contact APIs
Clone URL: git://github.com/mislav/contacts.git
mislav (author)
Sun Mar 16 18:27:56 -0700 2008
commit  714191ef18e397ef67d4cd1a1c3cc49f07e19828
tree    1bde69a1f520bbb51a1dcf89bd9b6bd8a822ed58
parent  f90514c82e4ea61750e453a9a26a96d1f878d030
name age message
file .gitignore Sun Mar 16 05:06:32 -0700 2008 doc love baby [mislav]
file MIT-LICENSE Sat Mar 15 17:09:16 -0700 2008 helper for AuthSub request [mislav]
file README.rdoc Sun Mar 16 06:25:52 -0700 2008 Tested it live; it works, but only for register... [mislav]
file Rakefile Sun Mar 16 04:16:17 -0700 2008 spec out parameter handling when requesting Ato... [mislav]
directory lib/ Sun Mar 16 18:27:56 -0700 2008 lib/contacts/gmail -> lib/contacts/google [mislav]
directory spec/ Sun Mar 16 18:27:56 -0700 2008 lib/contacts/gmail -> lib/contacts/google [mislav]
README.rdoc

Google Contacts API

Fetch users’ contact lists from your web application without asking them to provide their passwords.

First, register[http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html] your application’s domain. Then make users follow this URL:

  Contacts::Gmail.authentication_url('http://mysite.com/invite')

They will authenticate on Google and it will send them back to the URL provided. Google will add a token GET parameter to the query part of the URL. Use that token in the next step:

  gmail = Contacts::Gmail.new('example@gmail.com', params[:token])
  contacts = gmail.contacts
  #-> [ ['Fitzgerald', 'fubar@gmail.com', 'fubar@example.com'],
        ['William Paginate', 'will.paginate@gmail.com'], ...
        ]

Read more in Contacts::Gmail. I plan to support more APIs (Microsoft, etc); feel free to contribute.

Author: Mislav Marohnić (mislav.marohnic@gmail.com)

Specdoc

Contacts::Gmail.authentication_url

  • generates a URL for target with default parameters
  • should handle boolean parameters
  • skips parameters that have nil value

Contacts::Gmail

  • should be set to query contacts from a specific account
  • fetches contacts feed via HTTP GET
  • handles gzipped response
  • raises a FetchingError when something goes awry
  • parses the resulting feed into name/email pairs
  • makes modification time available after parsing

Contacts::Gmail GET query parameter handling

  • abstracts ugly parameters behind nicer ones
  • should have implicit :descending with :order
  • should have default :limit of 200
  • should skip nil values in parameters