desenvolvendo aplicativos sociais com rails 3
DESCRIPTION
Palestra realizada durante o RubyConf Brasil 2010.TRANSCRIPT
![Page 1: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/1.jpg)
Desenvolvendo Aplicativos Sociais com Rails 3
Carlos Brando
quarta-feira, 27 de outubro de 2010
![Page 2: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/2.jpg)
quarta-feira, 27 de outubro de 2010
![Page 3: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/3.jpg)
<?xml version="1.0" encoding="UTF-8" ?><Module> <ModulePrefs title="Standard gadget structure"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html"> <![CDATA[ Hello, RubyConf! ]]> </Content></Module>
quarta-feira, 27 de outubro de 2010
![Page 4: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/4.jpg)
<?xml version="1.0" encoding="UTF-8" ?><Module> <ModulePrefs title="Standard gadget structure"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html"> <![CDATA[ Hello, RubyConf! ]]> </Content></Module>
quarta-feira, 27 de outubro de 2010
![Page 5: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/5.jpg)
<?xml version="1.0" encoding="UTF-8" ?><Module> <ModulePrefs title="Standard gadget structure"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html"> <![CDATA[ Hello, RubyConf! ]]> </Content></Module>
quarta-feira, 27 de outubro de 2010
![Page 6: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/6.jpg)
<?xml version="1.0" encoding="UTF-8" ?><Module> <ModulePrefs title="Standard gadget structure"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html"> <![CDATA[ Hello, RubyConf! ]]> </Content></Module>
quarta-feira, 27 de outubro de 2010
![Page 7: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/7.jpg)
<?xml version="1.0" encoding="UTF-8" ?><Module> <ModulePrefs title="Standard gadget structure"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html"> <![CDATA[ Hello, RubyConf! ]]> </Content></Module>
quarta-feira, 27 de outubro de 2010
![Page 8: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/8.jpg)
<?xml version="1.0" encoding="UTF-8" ?><Module> <ModulePrefs title="Standard gadget structure"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html"> <![CDATA[ Hello, RubyConf! ]]> </Content></Module>
quarta-feira, 27 de outubro de 2010
![Page 9: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/9.jpg)
quarta-feira, 27 de outubro de 2010
![Page 10: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/10.jpg)
Profilesquarta-feira, 27 de outubro de 2010
![Page 11: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/11.jpg)
JSvar req = opensocial.newDataRequest();req.add(req.newFetchPersonRequest("OWNER"), "owner");req.send(fetchPersonHandler);
function fetchPersonHandler(data) { var owner = data.get('owner').getData(); alert(owner.getDisplayName());};
quarta-feira, 27 de outubro de 2010
![Page 12: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/12.jpg)
REST
require 'oauth'require 'json'
uri = URI.parse "http://sandbox.orkut.com/social/rest/people/#{orkut_uid}/@self?xoauth_requestor_id=#{orkut_uid}"
http = Net::HTTP.new(uri.host, uri.port)req = Net::HTTP::Get.new(uri.request_uri)
consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET)req.oauth!(http, consumer, nil, :scheme => 'query_string')
resp = http.get(req.path)JSON.parse(resp.body)
quarta-feira, 27 de outubro de 2010
![Page 13: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/13.jpg)
Friendsquarta-feira, 27 de outubro de 2010
![Page 14: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/14.jpg)
JSvar req = opensocial.newDataRequest();req.add(req.newFetchPersonRequest("VIEWER"), "viewer");
var viewerFriends = opensocial.newIdSpec({ "userId" : "VIEWER", "groupId" : "FRIENDS" });
req.add(req.newFetchPeopleRequest(viewerFriends, {}), 'viewerFriends');
req.send(onLoadFriends);
quarta-feira, 27 de outubro de 2010
![Page 15: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/15.jpg)
REST
http://sandbox.orkut.com/social/rest/people/#{orkut_uid}/@all?xoauth_requestor_id=#{orkut_uid}&count=9999
quarta-feira, 27 de outubro de 2010
![Page 16: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/16.jpg)
Activitiesquarta-feira, 27 de outubro de 2010
![Page 17: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/17.jpg)
JSfunction sendMessage(messageTitle, messageBody, friend) { var params = []; params[opensocial.Message.Field.TITLE] = messageTitle; params[opensocial.Message.Field.TYPE] = opensocial.Message.Type.EMAIL; var message = opensocial.newMessage(messageBody, params); opensocial.requestSendMessage(friend, message, function() {});
}
quarta-feira, 27 de outubro de 2010
![Page 18: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/18.jpg)
RESTquarta-feira, 27 de outubro de 2010
![Page 19: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/19.jpg)
function loadInitialData() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest("OWNER"), "owner"); req.add(req.newFetchPersonRequest("VIEWER"), "viewer"); req.send(function(dataResponse) { var owner = dataResponse.get('owner').getData(); var viewer = dataResponse.get('viewer').getData();
OWNER_ID = owner.getId(); VIEWER_ID = viewer.getId(); HOST_WITH_PORT = $('#host_with_port').val(); sendRequest('/speakers', {}, '#speakers'); });}gadgets.util.registerOnLoadHandler(loadInitialData);
quarta-feira, 27 de outubro de 2010
![Page 20: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/20.jpg)
function loadInitialData() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest("OWNER"), "owner"); req.add(req.newFetchPersonRequest("VIEWER"), "viewer"); req.send(function(dataResponse) { var owner = dataResponse.get('owner').getData(); var viewer = dataResponse.get('viewer').getData();
OWNER_ID = owner.getId(); VIEWER_ID = viewer.getId(); HOST_WITH_PORT = $('#host_with_port').val(); sendRequest('/speakers', {}, '#speakers'); });}gadgets.util.registerOnLoadHandler(loadInitialData);
quarta-feira, 27 de outubro de 2010
![Page 21: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/21.jpg)
function loadInitialData() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest("OWNER"), "owner"); req.add(req.newFetchPersonRequest("VIEWER"), "viewer"); req.send(function(dataResponse) { var owner = dataResponse.get('owner').getData(); var viewer = dataResponse.get('viewer').getData();
OWNER_ID = owner.getId(); VIEWER_ID = viewer.getId(); HOST_WITH_PORT = $('#host_with_port').val(); sendRequest('/speakers', {}, '#speakers'); });}gadgets.util.registerOnLoadHandler(loadInitialData);
quarta-feira, 27 de outubro de 2010
![Page 22: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/22.jpg)
function loadInitialData() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest("OWNER"), "owner"); req.add(req.newFetchPersonRequest("VIEWER"), "viewer"); req.send(function(dataResponse) { var owner = dataResponse.get('owner').getData(); var viewer = dataResponse.get('viewer').getData();
OWNER_ID = owner.getId(); VIEWER_ID = viewer.getId(); HOST_WITH_PORT = $('#host_with_port').val(); sendRequest('/speakers', {}, '#speakers'); });}gadgets.util.registerOnLoadHandler(loadInitialData);
quarta-feira, 27 de outubro de 2010
![Page 23: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/23.jpg)
function loadInitialData() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest("OWNER"), "owner"); req.add(req.newFetchPersonRequest("VIEWER"), "viewer"); req.send(function(dataResponse) { var owner = dataResponse.get('owner').getData(); var viewer = dataResponse.get('viewer').getData();
OWNER_ID = owner.getId(); VIEWER_ID = viewer.getId(); HOST_WITH_PORT = $('#host_with_port').val(); sendRequest('/speakers', {}, '#speakers'); });}gadgets.util.registerOnLoadHandler(loadInitialData);
quarta-feira, 27 de outubro de 2010
![Page 24: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/24.jpg)
function loadInitialData() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest("OWNER"), "owner"); req.add(req.newFetchPersonRequest("VIEWER"), "viewer"); req.send(function(dataResponse) { var owner = dataResponse.get('owner').getData(); var viewer = dataResponse.get('viewer').getData();
OWNER_ID = owner.getId(); VIEWER_ID = viewer.getId(); HOST_WITH_PORT = $('#host_with_port').val(); sendRequest('/speakers', {}, '#speakers'); });}gadgets.util.registerOnLoadHandler(loadInitialData);
quarta-feira, 27 de outubro de 2010
![Page 25: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/25.jpg)
function loadInitialData() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest("OWNER"), "owner"); req.add(req.newFetchPersonRequest("VIEWER"), "viewer"); req.send(function(dataResponse) { var owner = dataResponse.get('owner').getData(); var viewer = dataResponse.get('viewer').getData();
OWNER_ID = owner.getId(); VIEWER_ID = viewer.getId(); HOST_WITH_PORT = $('#host_with_port').val(); sendRequest('/speakers', {}, '#speakers'); });}gadgets.util.registerOnLoadHandler(loadInitialData);
quarta-feira, 27 de outubro de 2010
![Page 26: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/26.jpg)
function sendRequest(path, options, element) { var querystring = '?owner_id=' + OWNER_ID + '&viewer_id=' + VIEWER_ID; if (options) { $.each(options, function(index, val) { querystring = querystring + '&' + index + '=' + val; }); }; var url = HOST_WITH_PORT + '/opensocial' + path + querystring; var params = {}; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT; makeCachedRequest(encodeURI(url), function(result) { $(element).html(result.text); gadgets.window.adjustHeight(); }, params, 0);}
quarta-feira, 27 de outubro de 2010
![Page 27: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/27.jpg)
function sendRequest(path, options, element) { var querystring = '?owner_id=' + OWNER_ID + '&viewer_id=' + VIEWER_ID; if (options) { $.each(options, function(index, val) { querystring = querystring + '&' + index + '=' + val; }); }; var url = HOST_WITH_PORT + '/opensocial' + path + querystring; var params = {}; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT; makeCachedRequest(encodeURI(url), function(result) { $(element).html(result.text); gadgets.window.adjustHeight(); }, params, 0);}
quarta-feira, 27 de outubro de 2010
![Page 28: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/28.jpg)
function sendRequest(path, options, element) { var querystring = '?owner_id=' + OWNER_ID + '&viewer_id=' + VIEWER_ID; if (options) { $.each(options, function(index, val) { querystring = querystring + '&' + index + '=' + val; }); }; var url = HOST_WITH_PORT + '/opensocial' + path + querystring; var params = {}; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT; makeCachedRequest(encodeURI(url), function(result) { $(element).html(result.text); gadgets.window.adjustHeight(); }, params, 0);}
quarta-feira, 27 de outubro de 2010
![Page 29: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/29.jpg)
function sendRequest(path, options, element) { var querystring = '?owner_id=' + OWNER_ID + '&viewer_id=' + VIEWER_ID; if (options) { $.each(options, function(index, val) { querystring = querystring + '&' + index + '=' + val; }); }; var url = HOST_WITH_PORT + '/opensocial' + path + querystring; var params = {}; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT; makeCachedRequest(encodeURI(url), function(result) { $(element).html(result.text); gadgets.window.adjustHeight(); }, params, 0);}
quarta-feira, 27 de outubro de 2010
![Page 30: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/30.jpg)
function sendRequest(path, options, element) { var querystring = '?owner_id=' + OWNER_ID + '&viewer_id=' + VIEWER_ID; if (options) { $.each(options, function(index, val) { querystring = querystring + '&' + index + '=' + val; }); }; var url = HOST_WITH_PORT + '/opensocial' + path + querystring; var params = {}; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT; makeCachedRequest(encodeURI(url), function(result) { $(element).html(result.text); gadgets.window.adjustHeight(); }, params, 0);}
quarta-feira, 27 de outubro de 2010
![Page 31: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/31.jpg)
function sendRequest(path, options, element) { var querystring = '?owner_id=' + OWNER_ID + '&viewer_id=' + VIEWER_ID; if (options) { $.each(options, function(index, val) { querystring = querystring + '&' + index + '=' + val; }); }; var url = HOST_WITH_PORT + '/opensocial' + path + querystring; var params = {}; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT; makeCachedRequest(encodeURI(url), function(result) { $(element).html(result.text); gadgets.window.adjustHeight(); }, params, 0);}
quarta-feira, 27 de outubro de 2010
![Page 32: Desenvolvendo Aplicativos Sociais com Rails 3](https://reader034.vdocuments.mx/reader034/viewer/2022051400/559935281a28ab7a7a8b4698/html5/thumbnails/32.jpg)
@carlosbrando
www.nomedojogo.com
quarta-feira, 27 de outubro de 2010