Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ gem 'dotenv'
gem 'oauth'

gem 'twitter'
gem 'tumblr_client'

# Clockwork
gem 'clockwork'
Expand Down
10 changes: 10 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ GEM
i18n (~> 0.5)
faraday (0.9.2)
multipart-post (>= 1.2, < 3)
faraday_middleware (0.9.2)
faraday (>= 0.7.4, < 0.10)
http (1.0.4)
addressable (~> 2.3)
http-cookie (~> 1.0)
Expand Down Expand Up @@ -109,6 +111,13 @@ GEM
tilt (~> 1.3)
thread_safe (0.3.4)
tilt (1.4.1)
tumblr_client (0.8.5)
faraday (~> 0.9.0)
faraday_middleware (~> 0.9.0)
json
mime-types
oauth
simple_oauth
twitter (5.16.0)
addressable (~> 2.3)
buftok (~> 0.2.0)
Expand Down Expand Up @@ -152,6 +161,7 @@ DEPENDENCIES
simplecov
sinatra
sinatra-contrib
tumblr_client
twitter

BUNDLED WITH
Expand Down
15 changes: 15 additions & 0 deletions app/controllers/destinations_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,18 @@
twitter_media_upload("This is something, I swear:", "https://dl.dropboxusercontent.com/s/ephkiagrqgfc0y4/IMG_8489.JPG?raw=1")
redirect "/users/#{session[:user_id]}"
end

get '/tumblr-authenticate' do
get_tumblr_info
end

get '/tumblr-callback' do
get_tumblr_access_token
store_tumblr_access_token
get_and_store_tumblr_blog_title
# redirect "/users/#{session[:user_id]}"
end

get '/tumblr-testing' do
get_and_store_tumblr_blog_title
end
4 changes: 4 additions & 0 deletions app/helpers/tumblr_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
require_relative 'tumblr_module'
helpers do
include TumblrModule
end
81 changes: 81 additions & 0 deletions app/helpers/tumblr_module.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
require 'tumblr_client'
module TumblrModule
def get_tumblr_consumer
base = 'https://www.tumblr.com'
consumer = OAuth::Consumer.new(ENV['TUMBLR_KEY'],
ENV['TUMBLR_SECRET'],
{ site: base,
# request_token_path: '/oauth/request_token',
# authorize_path: '/oauth/authorize',
# access_token_path: '/oauth/access_token',
# http_method: :post
} )
end

def get_tumblr_info
consumer = get_tumblr_consumer
request_token = consumer.get_request_token(oauth_callback: ENV['TUMBLR_CALLBACK'])
session[:tumblr_request_token] = request_token
redirect request_token.authorize_url
end

def get_tumblr_access_token
session[:tumblr_access_token] = session[:tumblr_request_token].get_access_token(oauth_verifier: params[:oauth_verifier])
end

def store_tumblr_access_token
id = session[:user_id]
token = session[:tumblr_access_token].token
secret = session[:tumblr_access_token].secret
destination = Destination.find_by(user_id: id)
if destination
destination.tumblr_secret = secret
destination.tumblr_token = token
destination.save
else
Destination.create(user_id: id, tumblr_secret: secret, tumblr_token: token)
end
end

def get_and_store_tumblr_blog_title
client = get_tumblr_client
blogs = []
client.info["user"]["blogs"].each do |blog|
blogs << blog["url"].split('/')[2]
end
erb :blog_selection, layout: false, locals: {blogs: blogs}
end

def store_tumblr_blog_title

end

def get_tumblr_client
tokens = Destination.find_by(user_id: current_user.id)
access_token = OAuth::AccessToken.new(get_consumer, tokens.tumblr_token, tokens.tumblr_secret)

Tumblr.configure do |config|
config.consumer_key = ENV["TUMBLR_KEY"]
config.consumer_secret= ENV["TUMBLR_SECRET"]
config.oauth_token = access_token.token
config.oauth_token_secret = access_token.secret
end

client = Tumblr::Client.new
end

def tumblr_media_upload(status_msg, media_url, user_id = current_user.id)
tokens = Destination.find_by(user_id: user_id)
access_token = OAuth::AccessToken.new(get_consumer, tokens.tumblr_token, tokens.tumblr_secret)

Tumblr.configure do |config|
config.consumer_key = ENV["TUMBLR_KEY"]
config.consumer_secret= ENV["TUMBLR_SECRET"]
config.oauth_token = access_token.token
config.oauth_token_secret = access_token.secret
end

client = Tumblr::Client.new

end
end
9 changes: 9 additions & 0 deletions app/views/blog_selection.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<h2>Please select the blog you want Weeker to post to</h2>
<form method="/post" action="/tumblr-blog-select">
<select>
<% blogs.each do |blog| %>
<option value=<%blog%>><%= blog %></option>
<% end %>
</select>
<input type="submit" name="Select blog">
</form>
11 changes: 11 additions & 0 deletions app/views/users/show.erb
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,28 @@
<% else %>
<li><a href="/twitter-authenticate">Twitter</a></li>
<% end %>
<% if @user.destinations.first.tumblr_token %>
<li>Tumblr</li>
<% else %>
<li><a href="/tumblr-authenticate">Tumblr</a></li>
<% end %>
</ul>

<h4>Disconnect your social networks</h4>
<ul>
<% if !!@user.destinations && @user.destinations.first.twitter_token %>
<li><a href="/twitter-disable">Disconnect your Twitter account</a></li>
<% end %>
<% if !!@user.destinations && @user.destinations.first.tumblr_token %>
<li><a href="/tumblr-disable">Disconnect your Tumblr account</a></li>
<% end %>
</ul>

<h4>Push your work up early</h4>
<p><strong>Warning!</strong> This will clear your current folder and archive all the contents <em>before</em> this week's deadline.</p>
<form action="/sources/add-image" method="get">
<button class="button--red button--red-hover">Force Upload</button>
</form>


<a href="/tumblr-testing">Test tumblr access</a>
6 changes: 6 additions & 0 deletions db/migrate/20160424115643_add_tumblr_fields_to_destination.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class AddTumblrFieldsToDestination < ActiveRecord::Migration
def change
add_column :destinations, :tumblr_token, :string
add_column :destinations, :tumblr_secret, :string
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddTumblrBlogAddressFieldToDestinations < ActiveRecord::Migration
def change
add_column :destinations, :tumblr_blog, :string
end
end