MouseOver Studio

MouseOver Studio header image 2

Importa contatos do Google, Yahoo, Live e CSV na tua aplicação Rails com uma linha

outubro 6th, 2009 por Diego Carrion · 4 comentários

Trabalhando em diversas aplicações me vi na necessidade de integra-las com diretórios de serviços como Google, Yahoo ou Live, de modo que os usuários podam importar seus contatos e realizar com eles diferentes ações.

Existe uma gem chamada contacts que encapsula a comunicação com esses serviços, porém mesmo utilizando ela, muito código ficou repetido entre minhas aplicações, pelo que decidi encapsular mais um pouco e criar o contacts_rails.

Com o Contacts::Rails o único que devemos fazer é criar as rotas para algum controller:

map.import_google '/home/import/google',   :controller => "home", :action => 'import_google_contacts'
map.import_live   '/home/import/live',     :controller => "home", :action => 'import_live_contacts'
map.import_yahoo  '/home/import/yahoo',    :controller => "home", :action => 'import_yahoo_contacts'
map.import_csv    '/home/import/csv',      :controller => "home", :action => 'import_csv_contacts'

e depois incluir Contacts::Imports no mesmo:

class HomeController < ApplicationController do
  include Contacts::Imports
end

Quando um usuário acessar as diferentes rotas, ele sera redirecionado para o serviço correspondente, onde terá que se logar. Finalmente ele sera enviado para a view import com a variável @contacts contendo uma lista de contatos, onde cada contato é um array de dois items: nome e email.

Como podem ver nas rotas, também podemos importar contatos a partir de um arquivo CSV. Para isso devemos enviar no parâmetro csv_file um arquivo com a seguinte estrutura:

email, name
bob@marley.com , Bob Marley
che@guevara.com, Che Guevara
john@lennon.com ,John Lennon

A primeira linha existe porque podemos inverter a ordem das colunas, pelo que ela ajuda a identificar à que corresponde cada uma.

Atenção

Os serviços do Yahoo e do Live são bem mais burocráticos que o do Google, pelo que para utilizar eles precisaram configurar o arquivo config/contacts.yml após ter cadastrado suas aplicações:

http://developer.yahoo.com/addressbook/
http://msdn.microsoft.com/en-us/library/cc287659.aspx

Queria agradecer ao Hugo Baraúna da Plataforma, que me ajudou com a gem explicando a implementação que ele fez no seu fork do projeto contacts.

Tags: plugin · rails

4 respostas ate agora ↓

  • 1 Hugo Baraúna // out 6, 2009 at 11:44 pm

    Grande Carrion, ficou show e muito enxuta a inteface da gem, parabéns!

    Sempre que precisar, conte conosco. 😉

  • 2 Roger Leite // out 9, 2009 at 9:56 am

    E aê Carrion! Sucesso hein, provavelmente vou usá-la.

    Vlw!

  • 3 alessandra // jun 10, 2010 at 10:01 pm

    gostei muito desse sait

  • 4 Boris Cansler // nov 10, 2010 at 6:27 am

    Good is good, but better carries it.

    ———————————–
    Michigan

Deixar um comentário