class Lolcommits::LolTumblr

Constants

TUMBLR_API_ENDPOINT
TUMBLR_CONSUMER_KEY
TUMBLR_CONSUMER_SECRET

Public Class Methods

name() click to toggle source
# File lib/lolcommits/plugins/lol_tumblr.rb, line 107
def self.name
  'tumblr'
end
runner_order() click to toggle source
# File lib/lolcommits/plugins/lol_tumblr.rb, line 111
def self.runner_order
  :postcapture
end

Public Instance Methods

client() click to toggle source
# File lib/lolcommits/plugins/lol_tumblr.rb, line 82
def client
  @client ||= Tumblr.new(:consumer_key       => TUMBLR_CONSUMER_KEY,
                         :consumer_secret    => TUMBLR_CONSUMER_SECRET,
                         :oauth_token        => configuration['access_token'],
                         :oauth_token_secret => configuration['secret']
                        )
end
config_with_default(key, default = nil) click to toggle source
# File lib/lolcommits/plugins/lol_tumblr.rb, line 99
def config_with_default(key, default = nil)
  if configuration[key]
    configuration[key].strip.empty? ? default : configuration[key]
  else
    default
  end
end
configure_auth!() click to toggle source
# File lib/lolcommits/plugins/lol_tumblr.rb, line 37
def configure_auth!
  puts '---------------------------'
  puts 'Need to grab tumblr tokens'
  puts '---------------------------'

  request_token = oauth_consumer.get_request_token(:exclude_callback => true)
  print "\n1) Please open this url in your browser to authorize lolcommits:\n\n"
  puts request_token.authorize_url
  print "\n2) Launching a local server to complete the OAuth authentication process:\n\n"
  begin
    server = WEBrick::HTTPServer.new :Port => 3000
    server.mount_proc '/', server_callback(server)
    server.start
    debug "Requesting Tumblr OAuth Token with verifier: #{@verifier}"
    access_token = request_token.get_access_token(:oauth_verifier => @verifier)
  rescue Errno::EADDRINUSE
    puts "\nERROR You have something running on port 3000. Please turn it off to complete the authorization process"
    return
  rescue OAuth::Unauthorized
    puts "\nERROR: Tumblr OAuth verification faile!"
    return
  end
  return unless access_token.token && access_token.secret
  puts ''
  puts '------------------------------'
  puts 'Thanks! Tumblr Auth Succeeded'
  puts '------------------------------'

  {
    'access_token' => access_token.token,
    'secret'       => access_token.secret
  }
end
configure_options!() click to toggle source
Calls superclass method Lolcommits::Plugin#configure_options!
# File lib/lolcommits/plugins/lol_tumblr.rb, line 26
def configure_options!
  options = super
  # ask user to configure tokens if enabling
  if options['enabled']
    auth_config = configure_auth!
    return unless auth_config
    options = options.merge(auth_config).merge(configure_tumblr_name)
  end
  options
end
configure_tumblr_name() click to toggle source
# File lib/lolcommits/plugins/lol_tumblr.rb, line 71
def configure_tumblr_name
  print "\n3) What's your tumblr name? (i.e. 'http://[THIS PART HERE].tumblr.com'): "
  { 'tumblr_name' => STDIN.gets.strip }
end
configured?() click to toggle source
# File lib/lolcommits/plugins/lol_tumblr.rb, line 76
def configured?
  !configuration['enabled'].nil? &&
    configuration['access_token'] &&
    configuration['secret']
end
oauth_consumer() click to toggle source
# File lib/lolcommits/plugins/lol_tumblr.rb, line 90
def oauth_consumer
  @oauth_consumer ||= OAuth::Consumer.new(TUMBLR_CONSUMER_KEY,
                                          TUMBLR_CONSUMER_SECRET,
                                          :site             => TUMBLR_API_ENDPOINT,
                                          :request_endpoint => TUMBLR_API_ENDPOINT,
                                          :http_methdo => :get
                                         )
end
run_postcapture() click to toggle source
# File lib/lolcommits/plugins/lol_tumblr.rb, line 13
def run_postcapture
  return unless valid_configuration?
  puts 'Posting to Tumblr'
  r = client.photo(configuration['tumblr_name'], :data => runner.main_image)
  if r.key?('id')
    puts "\t--> Post successful!"
  else
    puts "Tumblr post FAILED! #{r}"
  end
rescue Faraday::Error => e
  puts "Tumblr post FAILED! #{e.message}"
end

Protected Instance Methods

server_callback(server) click to toggle source
# File lib/lolcommits/plugins/lol_tumblr.rb, line 117
def server_callback(server)
  proc do |req, res|
    q = CGI.parse req.request_uri.query
    @verifier = q['oauth_verifier'][0]
    server.stop
    res.body = 'Lolcommits authorization complete!'
  end
end