From 5cbbdf2949730bb19f9cd3f6c716ac831af6aadf Mon Sep 17 00:00:00 2001 From: Maxwell Salzberg Date: Wed, 1 Jun 2011 22:30:22 -0700 Subject: [PATCH] initial post to tumblr support --- Gemfile | 6 +- Gemfile.lock | 119 +++++++++--------- app/controllers/services_controller.rb | 2 + app/models/services/tumblr.rb | 27 ++++ app/views/people/_index.html.haml | 17 +++ app/views/people/tag_index.js.erb | 1 + app/views/shared/_add_remove_services.haml | 3 + config/initializers/omniauth.rb | 1 + .../social_media_logos/tumblr-16x16.png | Bin 0 -> 348 bytes .../social_media_logos/tumblr-24x24.png | Bin 0 -> 796 bytes .../social_media_logos/tumblr-32x32.png | Bin 0 -> 1196 bytes .../social_media_logos/tumblr-48x48.png | Bin 0 -> 2086 bytes 12 files changed, 114 insertions(+), 62 deletions(-) create mode 100644 app/models/services/tumblr.rb create mode 100644 app/views/people/_index.html.haml create mode 100644 app/views/people/tag_index.js.erb create mode 100644 public/images/social_media_logos/tumblr-16x16.png create mode 100644 public/images/social_media_logos/tumblr-24x24.png create mode 100644 public/images/social_media_logos/tumblr-32x32.png create mode 100644 public/images/social_media_logos/tumblr-48x48.png diff --git a/Gemfile b/Gemfile index 9058e0d8e..c7ab2ddcd 100644 --- a/Gemfile +++ b/Gemfile @@ -16,8 +16,8 @@ gem 'devise', '~> 1.3.1' gem 'devise_invitable', '0.5.0' #Authentication -gem 'omniauth', '0.1.6' -gem 'twitter', :git => 'git://github.com/jnunemaker/twitter.git', :ref => 'ef122bbb280e229ed343' +gem 'omniauth', '0.2.6' +gem 'twitter', '1.5.0' #Views gem 'haml', '3.0.25' @@ -31,7 +31,7 @@ gem 'acts-as-taggable-on', :git => 'git://github.com/diaspora/acts-as-taggable-o #Uncatagorized gem 'roxml', :git => 'git://github.com/Empact/roxml.git', :ref => '7ea9a9ffd2338aaef5b0' -gem 'addressable', '2.2.2', :require => 'addressable/uri' +gem 'addressable', '2.2.4', :require => 'addressable/uri' gem 'json', '1.4.6' gem 'http_accept_language', :git => 'git://github.com/iain/http_accept_language.git', :ref => '0b78aa7849fc90cf9e12' diff --git a/Gemfile.lock b/Gemfile.lock index b7923f83b..ce32423ac 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -37,19 +37,6 @@ GIT addressable (>= 2.1.1) eventmachine (>= 0.12.9) -GIT - remote: git://github.com/jnunemaker/twitter.git - revision: ef122bbb280e229ed34347c235c68aa9349d0d8e - ref: ef122bbb280e229ed343 - specs: - twitter (1.0.0) - faraday (~> 0.5.3) - faraday_middleware (~> 0.3.0) - hashie (~> 0.4.0) - multi_json (~> 0.0.5) - multi_xml (~> 0.2.0) - simple_oauth (~> 0.1.2) - GEM remote: http://rubygems.org/ specs: @@ -85,7 +72,7 @@ GEM activemodel (= 3.0.3) activesupport (= 3.0.3) activesupport (3.0.3) - addressable (2.2.2) + addressable (2.2.4) arel (2.0.10) aws (2.3.32) activesupport @@ -163,12 +150,12 @@ GEM factory_girl_rails (1.0.1) factory_girl (~> 1.3) railties (>= 3.0.0) - faraday (0.5.4) - addressable (~> 2.2.2) + faraday (0.6.1) + addressable (~> 2.2.4) multipart-post (~> 1.1.0) - rack (< 2, >= 1.1.0) - faraday_middleware (0.3.2) - faraday (~> 0.5.4) + rack (>= 1.1.0, < 2) + faraday_middleware (0.6.3) + faraday (~> 0.6.0) fastercsv (1.5.4) fastthread (1.0.7) ffi (0.6.3) @@ -190,10 +177,10 @@ GEM rspec-instafail (~> 0.1.4) ruby-progressbar (~> 0.0.10) gem_plugin (0.2.3) - gherkin (2.3.9) + gherkin (2.3.10) json (>= 1.4.6) haml (3.0.25) - hashie (0.4.0) + hashie (1.0.0) highline (1.6.2) http_connection (1.4.1) i18n (0.6.0) @@ -236,11 +223,11 @@ GEM daemons (>= 1.0.3) fastthread (>= 1.0.1) gem_plugin (>= 0.2.3) - multi_json (0.0.5) + multi_json (1.0.3) multi_xml (0.2.2) multipart-post (1.1.2) mysql2 (0.2.6) - net-ldap (0.1.1) + net-ldap (0.2.2) net-scp (1.0.4) net-ssh (>= 1.99.1) net-sftp (2.0.5) @@ -249,33 +236,36 @@ GEM net-ssh-gateway (1.1.0) net-ssh (>= 1.99.1) nokogiri (1.4.3.1) - oa-basic (0.1.6) - multi_json (~> 0.0.2) - nokogiri (~> 1.4.2) - oa-core (= 0.1.6) + oa-basic (0.2.6) + oa-core (= 0.2.6) rest-client (~> 1.6.0) - oa-core (0.1.6) - rack (~> 1.1) - oa-enterprise (0.1.6) - net-ldap (~> 0.1.1) + oa-core (0.2.6) + oa-enterprise (0.2.6) + addressable (= 2.2.4) + net-ldap (~> 0.2.2) nokogiri (~> 1.4.2) - oa-core (= 0.1.6) + oa-core (= 0.2.6) pyu-ruby-sasl (~> 0.0.3.1) rubyntlm (~> 0.1.1) - oa-oauth (0.1.6) - multi_json (~> 0.0.2) - nokogiri (~> 1.4.2) - oa-core (= 0.1.6) + oa-more (0.2.6) + multi_json (~> 1.0.0) + oa-core (= 0.2.6) + rest-client (~> 1.6.0) + oa-oauth (0.2.6) + faraday (~> 0.6.1) + multi_json (~> 1.0.0) + multi_xml (~> 0.2.2) + oa-core (= 0.2.6) oauth (~> 0.4.0) - oauth2 (~> 0.1.0) - oa-openid (0.1.6) - oa-core (= 0.1.6) - rack-openid (~> 1.2.0) - ruby-openid-apps-discovery + oauth2 (~> 0.4.1) + oa-openid (0.2.6) + oa-core (= 0.2.6) + rack-openid (~> 1.3.1) + ruby-openid-apps-discovery (~> 1.2.0) oauth (0.4.4) - oauth2 (0.1.1) - faraday (~> 0.5.0) - multi_json (~> 0.0.4) + oauth2 (0.4.1) + faraday (~> 0.6.1) + multi_json (>= 0.0.5) ohai (0.5.8) extlib json (<= 1.4.6, >= 1.4.4) @@ -283,20 +273,21 @@ GEM mixlib-config mixlib-log systemu - omniauth (0.1.6) - oa-basic (= 0.1.6) - oa-core (= 0.1.6) - oa-enterprise (= 0.1.6) - oa-oauth (= 0.1.6) - oa-openid (= 0.1.6) + omniauth (0.2.6) + oa-basic (= 0.2.6) + oa-core (= 0.2.6) + oa-enterprise (= 0.2.6) + oa-more (= 0.2.6) + oa-oauth (= 0.2.6) + oa-openid (= 0.2.6) open4 (1.0.1) orm_adapter (0.0.5) polyglot (0.3.1) - pyu-ruby-sasl (0.0.3.2) + pyu-ruby-sasl (0.0.3.3) rack (1.2.3) rack-mount (0.6.14) rack (>= 1.0.0) - rack-openid (1.2.0) + rack-openid (1.3.1) rack (>= 1.1.0) ruby-openid (>= 2.1.8) rack-test (0.5.7) @@ -314,7 +305,9 @@ GEM activesupport (= 3.0.3) rake (>= 0.8.7) thor (~> 0.14.4) - rake (0.9.0) + rake (0.9.1) + rash (0.3.0) + hashie (~> 1.0.0) rcov (0.9.9) redis (2.2.0) redis-namespace (0.8.0) @@ -335,7 +328,7 @@ GEM diff-lcs (~> 1.1.2) rspec-instafail (0.1.7) rspec-mocks (2.6.0) - rspec-rails (2.6.0) + rspec-rails (2.6.1) actionpack (~> 3.0) activesupport (~> 3.0) railties (~> 3.0) @@ -370,9 +363,17 @@ GEM eventmachine (>= 0.12.6) rack (>= 1.0.0) thor (0.14.6) - tilt (1.3.1) + tilt (1.3.2) treetop (1.4.9) polyglot (>= 0.3.1) + twitter (1.5.0) + faraday (~> 0.6.1) + faraday_middleware (~> 0.6.3) + hashie (~> 1.0.0) + multi_json (~> 1.0.0) + multi_xml (~> 0.2.0) + rash (~> 0.3.0) + simple_oauth (~> 0.1.5) typhoeus (0.2.4) mime-types mime-types @@ -386,7 +387,7 @@ GEM addressable (>= 2.2.2) crack (>= 0.1.7) will_paginate (3.0.pre2) - xml-simple (1.0.15) + xml-simple (1.0.16) yui-compressor (0.9.6) POpen4 (>= 0.1.4) @@ -396,7 +397,7 @@ PLATFORMS DEPENDENCIES SystemTimer (= 1.2.1) acts-as-taggable-on! - addressable (= 2.2.2) + addressable (= 2.2.4) aws (= 2.3.32) bundler (>= 1.0.0) capistrano (= 2.5.19) @@ -429,7 +430,7 @@ DEPENDENCIES mysql2 (= 0.2.6) nokogiri ohai (= 0.5.8) - omniauth (= 0.1.6) + omniauth (= 0.2.6) rails (= 3.0.3) rcov resque (= 1.10.0) @@ -444,7 +445,7 @@ DEPENDENCIES settingslogic (= 2.0.6) sod! thin (= 1.2.11) - twitter! + twitter (= 1.5.0) typhoeus webmock will_paginate (= 3.0.pre2) diff --git a/app/controllers/services_controller.rb b/app/controllers/services_controller.rb index ae855f4ae..61ff9dde2 100644 --- a/app/controllers/services_controller.rb +++ b/app/controllers/services_controller.rb @@ -11,6 +11,8 @@ class ServicesController < ApplicationController def create auth = request.env['omniauth.auth'] + puts auth.inspect + toke = auth['credentials']['token'] secret = auth['credentials']['secret'] diff --git a/app/models/services/tumblr.rb b/app/models/services/tumblr.rb new file mode 100644 index 000000000..7a053d07e --- /dev/null +++ b/app/models/services/tumblr.rb @@ -0,0 +1,27 @@ +class Services::Tumblr < Service + MAX_CHARACTERS = 1000 + + def provider + "tumblr" + end + + def consumer_key + SERVICES['tumblr']['consumer_key'] + end + + def consumer_secret + SERVICES['tumblr']['consumer_secret'] + end + + def post(post, url='') + consumer = OAuth::Consumer.new(consumer_key, consumer_secret, :site => 'http://tumblr.com') + access = OAuth::AccessToken.new(consumer, self.access_token, self.access_secret) + resp = access.post('http://tumblr.com/api/write', {:type => 'regular', :title => self.public_message(post, url), :generator => 'diaspora'}) + resp + end + + def public_message(post, url) + super(post, MAX_CHARACTERS, url) + end +end + diff --git a/app/views/people/_index.html.haml b/app/views/people/_index.html.haml new file mode 100644 index 000000000..d7f36f7af --- /dev/null +++ b/app/views/people/_index.html.haml @@ -0,0 +1,17 @@ +.people_stream + - for person in people + .stream_element{:id => person.id} + = person_image_link(person) + - if current_user + - contact = current_user.contacts.find_by_person_id(person.id) + - contact ||= Contact.new(:person => person) + - unless person == current_user.person + .right + = render 'aspect_memberships/aspect_dropdown', :contact => contact, :person => person, :hang => 'left' + + .content + %span.from + =person_link(person) + .info + = person.profile.format_tags(person.profile.tag_string) + = will_paginate people, :params => {:controller => 'people', :action => 'tag_index'} diff --git a/app/views/people/tag_index.js.erb b/app/views/people/tag_index.js.erb new file mode 100644 index 000000000..a683b2227 --- /dev/null +++ b/app/views/people/tag_index.js.erb @@ -0,0 +1 @@ +$(".people_stream").html("<%= escape_javascript(render("index", :people => @people)) %>"); diff --git a/app/views/shared/_add_remove_services.haml b/app/views/shared/_add_remove_services.haml index fe2861429..741cbf1dc 100644 --- a/app/views/shared/_add_remove_services.haml +++ b/app/views/shared/_add_remove_services.haml @@ -16,3 +16,6 @@ - unless @services.any?{|x| x.provider == 'facebook'} %h4= link_to t('services.index.connect_to_facebook'), "/auth/facebook" if SERVICES['facebook']['app_id'] !="" + +- unless @services.any?{|x| x.provider == 'tumblr'} + %h4= link_to t('services.index.connect_to_tumblr'), "/auth/tumblr" if SERVICES['tumblr']['consumer_key'] !="" diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb index 9789fee19..1cde0788c 100644 --- a/config/initializers/omniauth.rb +++ b/config/initializers/omniauth.rb @@ -4,6 +4,7 @@ Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter, SERVICES['twitter']['consumer_key'], SERVICES['twitter']['consumer_secret'] + provider :tumblr, SERVICES['tumblr']['consumer_key'], SERVICES['tumblr']['consumer_secret'] provider :facebook, SERVICES['facebook']['app_id'], SERVICES['facebook']['app_secret'], :scope => "publish_stream,email,offline_access" end diff --git a/public/images/social_media_logos/tumblr-16x16.png b/public/images/social_media_logos/tumblr-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..380809eba594b4f80438d22bce4d778d6904acef GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}QGic~>z_Y=-hKG^_Wg$kkDp(> zerMyZLo=3coV;L7ME->E?7E=z8o%^5=eQb|s6xw-B8$*MtDp>%z+6MWEIqF@9nVy4 z_hfaK1XZUv6^9r_+emrKa9OJ`S&L8^^AIVsAaP@VQA1y0eQzOsZ*C1220^9&|Nnb2 zX=wv(S1Sqf3kGrtg8dBP%;$CjbrgHLIEF|_h8~O*YcddVIans=FhzmGsA|W}|6*sG z<%3lHk923VOtdi(+YE*?e)}CiE}-zMaIt&I{$9S1y$b$E{xjBZ65pR5w#E}^J%gvK KpUXO@geCy-|CMS0 literal 0 HcmV?d00001 diff --git a/public/images/social_media_logos/tumblr-24x24.png b/public/images/social_media_logos/tumblr-24x24.png new file mode 100644 index 0000000000000000000000000000000000000000..30af59c7b83d3897f9a2d98c3f5cb8b2b6c8d75b GIT binary patch literal 796 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 QasU7T07*qoM6N<$g4)yVT>t<8 literal 0 HcmV?d00001