module Twitter::RailsUtil

Public Class Methods

included(controller) click to toggle source
Calls superclass method RestCore::RailsUtilUtil::included
# File lib/rest-core/client/twitter/rails_util.rb, line 18
def self.included controller
  # skip if included already, any better way to detect this?
  return if controller.respond_to?(:rc_twitter, true)
  super
  controller.rescue_from(RestCore::Twitter::Error::Unauthorized,
                         :with => :rc_twitter_on_unauthorized)
end

Public Instance Methods

rc_twitter_authorize(error=nil, force_redirect=true) click to toggle source
# File lib/rest-core/client/twitter/rails_util.rb, line 49
def rc_twitter_authorize error=nil, force_redirect=true
  logger.info("INFO: Twitter: #{error.inspect}")

  if force_redirect || rc_options_get(RestCore::Twitter, :auto_authorize)
    rc_twitter_cleanup

    callback = rc_twitter_normalized_request_uri
    redirect_url = rc_twitter.authorize_url!(:oauth_callback => callback)
    rc_twitter.oauth_callback = callback
    rc_twitter_write_data_json

    logger.debug(
      "DEBUG: Twitter: redirect to #{redirect_url} from #{callback}")

    redirect_to redirect_url
  end
end
rc_twitter_check_cookies() click to toggle source
# File lib/rest-core/client/twitter/rails_util.rb, line 104
def rc_twitter_check_cookies
  return if rc_twitter.authorized?                             ||
            !rc_options_get(RestCore::Twitter, :write_cookies) ||
            !(data_json = cookies[rc_twitter_storage_key])

  rc_twitter.data_json = data_json
  logger.debug("DEBUG: Twitter: detected rc_twitter cookies, parsed:" \
               " #{rc_twitter.data.inspect}")
end
rc_twitter_check_handler(handler= rc_options_get(RestCore::Twitter, :check_handler)) click to toggle source
# File lib/rest-core/client/twitter/rails_util.rb, line 85
def rc_twitter_check_handler handler=
    rc_options_get(RestCore::Twitter, :check_handler)

  return if rc_twitter.authorized? || !handler
  rc_twitter.data_json = handler.call
  logger.debug("DEBUG: Twitter: called check_handler, parsed:" \
               " #{rc_twitter.data.inspect}")
end
rc_twitter_check_oauth_verifier() click to toggle source
# File lib/rest-core/client/twitter/rails_util.rb, line 72
def rc_twitter_check_oauth_verifier
  return if !rc_twitter.oauth_callback || !params[:oauth_verifier]

  rc_twitter.authorize!(:oauth_verifier => params[:oauth_verifier])
  rc_twitter.data.delete('oauth_callback')

  logger.debug(
    "DEBUG: Twitter: detected oauth_verifier with #{request.url}," \
    " parsed: #{rc_twitter.data.inspect}")

  rc_twitter_write_data_json if rc_twitter.authorized?
end
rc_twitter_check_session() click to toggle source
# File lib/rest-core/client/twitter/rails_util.rb, line 94
def rc_twitter_check_session
  return if rc_twitter.authorized?                             ||
            !rc_options_get(RestCore::Twitter, :write_session) ||
            !(data_json = session[rc_twitter_storage_key])

  rc_twitter.data_json = data_json
  logger.debug("DEBUG: Twitter: detected rc_twitter session, parsed:" \
               " #{rc_twitter.data.inspect}")
end
rc_twitter_cleanup() click to toggle source
begin misc ================================
# File lib/rest-core/client/twitter/rails_util.rb, line 145
def rc_twitter_cleanup
  session.delete(rc_twitter_storage_key)
  cookies.delete(rc_twitter_storage_key)
end
rc_twitter_normalized_request_uri() click to toggle source
# File lib/rest-core/client/twitter/rails_util.rb, line 150
def rc_twitter_normalized_request_uri
  URI.parse(request.url).tap{ |uri|
    uri.query = uri.query.split('&').reject{ |q|
                  q =~ /^(oauth_verifier|oauth_token)\=/
                }.join('&') if uri.query
    uri.query = nil if uri.query.blank?
  }.to_s
end
rc_twitter_on_unauthorized(error=nil) click to toggle source
# File lib/rest-core/client/twitter/rails_util.rb, line 45
def rc_twitter_on_unauthorized error=nil
  rc_twitter_authorize(error, false)
end
rc_twitter_setup(options={}) click to toggle source
Calls superclass method
# File lib/rest-core/client/twitter/rails_util.rb, line 26
def rc_twitter_setup options={}
  super

  rc_twitter_check_handler
  rc_twitter_check_session
  rc_twitter_check_cookies
  rc_twitter_check_oauth_verifier

  if rc_options_get(RestCore::Twitter, :ensure_authorized) &&
     !rc_twitter.authorized?

    rc_twitter_authorize('ensure authorized')
    false # action halt, redirect to do authorize,
          # eagerly, as opposed to auto_authorize
  else
    true  # keep going
  end
end
rc_twitter_storage_key() click to toggle source
begin check ================================
# File lib/rest-core/client/twitter/rails_util.rb, line 68
def rc_twitter_storage_key
  "rc_twitter_#{rc_twitter.consumer_key}"
end
rc_twitter_write_cookies() click to toggle source
# File lib/rest-core/client/twitter/rails_util.rb, line 135
def rc_twitter_write_cookies
  return if !rc_options_get(RestCore::Twitter, :write_cookies)
  cookies[rc_twitter_storage_key] = data_json = rc_twitter.data_json
  logger.debug("DEBUG: Twitter: wrote cookies: data_json => #{data_json}")
end
rc_twitter_write_data_json() click to toggle source
end check ================================
begin write ================================
# File lib/rest-core/client/twitter/rails_util.rb, line 115
def rc_twitter_write_data_json
  rc_twitter_write_handler
  rc_twitter_write_session
  rc_twitter_write_cookies
end
rc_twitter_write_handler(handler= rc_options_get(RestCore::Twitter, :write_handler)) click to toggle source
# File lib/rest-core/client/twitter/rails_util.rb, line 121
def rc_twitter_write_handler handler=
  rc_options_get(RestCore::Twitter, :write_handler)

  return if !handler
  handler.call(data_json = rc_twitter.data_json)
  logger.debug("DEBUG: Twitter: write_handler: data_json => #{data_json}")
end
rc_twitter_write_session() click to toggle source
# File lib/rest-core/client/twitter/rails_util.rb, line 129
def rc_twitter_write_session
  return if !rc_options_get(RestCore::Twitter, :write_session)
  session[rc_twitter_storage_key] = data_json = rc_twitter.data_json
  logger.debug("DEBUG: Twitter: wrote session: data_json => #{data_json}")
end