class OmniAuth::Strategies::Twitter

def callback_path

def callback_path
  params = session['omniauth.params']
  if params.nil? || params['callback_url'].nil?
    super
  else
    URI(params['callback_url']).path
  end
end

def callback_url

def callback_url
  if request.params['callback_url']
    request.params['callback_url']
  else
    old_callback_url
  end
end

def image_url

def image_url
  original_url = options[:secure_image_url] ? raw_info['profile_image_url_https'] : raw_info['profile_image_url']
  case options[:image_size]
  when 'mini'
    original_url.sub('normal', 'mini')
  when 'bigger'
    original_url.sub('normal', 'bigger')
  when 'original'
    original_url.sub('_normal', '')
  else
    original_url
  end
end

def raw_info

def raw_info
  @raw_info ||= JSON.load(access_token.get('/1.1/account/verify_credentials.json?include_entities=false&skip_status=true&include_email=true').body)
rescue ::Errno::ETIMEDOUT
  raise ::Timeout::Error
end

def request_phase

def request_phase
  %w[force_login lang screen_name].each do |v|
    if request.params[v]
      options[:authorize_params][v.to_sym] = request.params[v]
    end
  end
  %w[x_auth_access_type].each do |v|
    if request.params[v]
      options[:request_params][v.to_sym] = request.params[v]
    end
  end
  if options[:use_authorize] || request.params['use_authorize'] == 'true'
    options[:client_options][:authorize_path] = '/oauth/authorize'
  else
    options[:client_options][:authorize_path] = '/oauth/authenticate'
  end
  old_request_phase
end