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.
3 respostas ate agora ↓
1 Hugo Baraúna // Oct 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 // Oct 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
Deixar um comentário