module Spherebird

Public Instance Methods

config_file_path() click to toggle source
# File lib/spherebird.rb, line 6
def config_file_path
  "config/twitter_oauth.yml"
end
on_twitter_profile_update() click to toggle source
# File lib/spherebird.rb, line 161
def on_twitter_profile_update
end
profile_cache_lifetime() click to toggle source
# File lib/spherebird.rb, line 10
def profile_cache_lifetime
  1800
end
twitter() click to toggle source
# File lib/spherebird.rb, line 111
def twitter
  return @twitter if @twitter

  Twitter.configure do |config|
    config.consumer_key    = twitter_oauth_config['consumer_token']
    config.consumer_secret = twitter_oauth_config['consumer_secret']

    config.oauth_token        = twitter_session_read(:access_token)
    config.oauth_token_secret = twitter_session_read(:access_token_secret)

    if twitter_oauth_config['proxy']
      config.proxy = twitter_oauth_config['proxy']
    end
  end

  @twitter = Twitter::Client.new
end
twitter_authorized?() click to toggle source
# File lib/spherebird.rb, line 56
def twitter_authorized?
  twitter_login_state == "authorized"
end
twitter_logged_in?() click to toggle source
# File lib/spherebird.rb, line 52
def twitter_logged_in?
  twitter_login_state == "logged_in"
end
twitter_login_state() click to toggle source
# File lib/spherebird.rb, line 48
def twitter_login_state
  twitter_session_read(:oauth_state)
end
twitter_oauth() click to toggle source
# File lib/spherebird.rb, line 60
def twitter_oauth
  if twitter_logged_in?

    redirect_to twitter_oauth_config['logged_in_url']

  elsif twitter_authorized?

    @request_token = OAuth::RequestToken.new(twitter_oauth_consumer,
                                             twitter_session_read(:request_token),
                                             twitter_session_read(:request_token_secret))

    begin
      @access_token = @request_token.get_access_token()
    rescue OAuth::Unauthorized => e
      twitter_session_clear
      redirect_to :controller => 'oauth',
        :action     => 'index'
      return
    rescue => e
      raise e
    end

    twitter_session_write :access_token, @access_token.token
    twitter_session_write :access_token_secret, @access_token.secret

    twitter_session_write :oauth_state, "logged_in"

    redirect_to :controller => 'users',
      :action => 'profile'

  else

    request_token = twitter_oauth_consumer.get_request_token(
      :oauth_callback => twitter_oauth_config['callback_url']
    )

    twitter_session_clear
    twitter_session_write :request_token, request_token.token
    twitter_session_write :request_token_secret, request_token.secret

    redirect_to request_token.authorize_url
  end
end
twitter_oauth_config() click to toggle source
# File lib/spherebird.rb, line 14
  def twitter_oauth_config
    if @twitter_oauth_config.nil?
      if File.exists?(config_file_path)
        twitter_oauth_configs = YAML::load_file(config_file_path)
        @twitter_oauth_config = twitter_oauth_configs[Rails.env]
      else
        raise <<-EXCEPTION
        Twitter-OAuth Configurate File (#{config_file_path}) is missing.
        Example:
        EXCEPTION
      end
    end

    @twitter_oauth_config
  end
twitter_oauth_consumer() click to toggle source
# File lib/spherebird.rb, line 30
def twitter_oauth_consumer
  options = {
    :site              => "http://twitter.com",
    :request_token_url => "https://api.twitter.com/oauth/request_token",
    :authorize_url     => "https://api.twitter.com/oauth/authorize",
    :access_token_url  => "https://api.twitter.com/oauth/access_token",
  }
  if twitter_oauth_config['proxy']
    options[:proxy] = twitter_oauth_config['proxy']
  end
  puts options
  OAuth::Consumer.new(
    twitter_oauth_config['consumer_token'],
    twitter_oauth_config['consumer_secret'],
    options
  )
end
twitter_oauth_request(oauth_token = nil) click to toggle source
# File lib/spherebird.rb, line 104
def twitter_oauth_request (oauth_token = nil)
  if oauth_token.nil? || oauth_token == twitter_session_read(:request_token)
    twitter_session_write :oauth_state, "authorized"
  end
  twitter_oauth
end
twitter_profile(options = {}) click to toggle source

options:

force_update (BOOL)
# File lib/spherebird.rb, line 131
def twitter_profile(options = {})
  profile = twitter_session_read(:profile)
  expiry = twitter_session_read(:profile_expiry_date)
  if options[:force_update] || profile.nil? || expiry.nil? || (expiry - Time.now).to_i < 0
    twitter_session_write(:profile_expiry_date, Time.now + profile_cache_lifetime)
    begin
      profile = twitter.verify_credentials
    rescue Twitter::Error::Unauthorized
      return nil
    end
    twitter_session_write(:profile, profile)
    on_twitter_profile_update
  end
  return profile
end
twitter_session_clear() click to toggle source
# File lib/spherebird.rb, line 157
def twitter_session_clear
  session[:twitter] = nil
end
twitter_session_read(key) click to toggle source
# File lib/spherebird.rb, line 147
def twitter_session_read (key)
  session[:twitter] ||= {}
  session[:twitter][key]
end
twitter_session_write(key, value) click to toggle source
# File lib/spherebird.rb, line 152
def twitter_session_write (key, value)
  session[:twitter] ||= {}
  session[:twitter][key] = value
end