class Termtter::RubytterProxy

Attributes

rubytter[R]
safe_mode[RW]

Public Class Methods

new(access_token, twitter_option) click to toggle source
# File lib/plugins/basic.rb, line 12
def initialize(access_token, twitter_option)
  user_name = config.plugins.basic.user_name
  password = config.plugins.basic.password
  @rubytter = Rubytter.new(user_name, password, twitter_option)
end

Public Instance Methods

access_token() click to toggle source

XXX: these methods should be in oauth_rubytter

# File lib/termtter/rubytter_proxy.rb, line 172
def access_token
  @rubytter.instance_variable_get(:@access_token)
end
cached_status(status_id) click to toggle source
# File lib/plugins/mongo.rb, line 104
def cached_status(status_id)
  status = Termtter::Client.memory_cache.get(['status', status_id].join('-'))
  status ||= Termtter::Client.mongo_db.collection('status').find_one({'id' => status_id.to_i})
  Termtter::ActiveRubytter.new(status) if status
end
cached_user(screen_name_or_id) click to toggle source
# File lib/termtter/rubytter_proxy.rb, line 85
def cached_user(screen_name_or_id)
  user =
    Termtter::Client.memory_cache.get(
      ['user', Termtter::Client.normalize_as_user_name(screen_name_or_id.to_s)].join('-'))
  ActiveRubytter.new(user) if user
end
call_rubytter(method, *args, &block)
call_rubytter_or_use_cache(method, *args, &block) click to toggle source
# File lib/termtter/rubytter_proxy.rb, line 58
def call_rubytter_or_use_cache(method, *args, &block)
  case method
  when :show
    status = cached_status(args[0])
    unless status
      status = call_rubytter(method, *args, &block)
      store_status_cache(status)
    end
    status
  when :user
    user = cached_user(args[0])
    unless user
      user = call_rubytter(method, *args, &block)
      store_user_cache(user)
    end
    user
  when :home_timeline, :user_timeline, :friends_timeline, :search
    statuses = call_rubytter(method, *args, &block)
    statuses.each do |status|
      store_status_cache(status)
    end
    statuses
  else
    call_rubytter(method, *args, &block)
  end
end
call_rubytter_with_list_switch(method, *args, &block) click to toggle source
# File lib/plugins/list_switch.rb, line 21
def call_rubytter_with_list_switch(method, *args, &block)
  Termtter::Plugins::ListSwitch.call_rubytter(self, method, *args, &block)
end
Also aliased as: call_rubytter
call_rubytter_without_list_switch(method, *args, &block)
Alias for: call_rubytter
consumer_token() click to toggle source
# File lib/termtter/rubytter_proxy.rb, line 176
def consumer_token
  access_token.consumer
end
current_limit() click to toggle source
# File lib/termtter/rubytter_proxy.rb, line 123
def current_limit
  @limit_manager ||= LimitManager.new(@rubytter)
end
error_html_message_orig(e)
Alias for: error_html_message
error_html_message_whale(e) click to toggle source
# File lib/plugins/whale.rb, line 5
def error_html_message_whale(e)
  if %r'Twitter / Over capacity' =~ e.message
    WHALE
  else
    error_html_message_orig(e)
  end
end
Also aliased as: error_html_message
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/termtter/rubytter_proxy.rb, line 21
def method_missing(method, *args, &block)
  return super if !@rubytter.respond_to?(method)
  result = nil
  begin
    modified_args = args
    hooks = self.class.get_hooks("pre_#{method}")
    hooks.each do |hook|
      modified_args = hook.call(*modified_args)
    end

    from = Time.now if Termtter::Client.logger.debug?
    Termtter::Client.logger.debug {
      "rubytter_proxy: #{method}(#{modified_args.inspect[1...-1]})"
    }
    result = call_rubytter_or_use_cache(method, *modified_args, &block)
    Termtter::Client.logger.debug {
      "rubytter_proxy: #{method}(#{modified_args.inspect[1...-1]}), " +
        "%.2fsec" % (Time.now - from)
    }

    self.class.call_hooks("post_#{method}", *args)
  rescue HookCanceled
  rescue Timeout::Error => e
    Termtter::Client.logger.debug {
      "rubytter_proxy: #{method}(#{modified_args.inspect[1...-1]}) " +
        "#{e.message} #{'%.2fsec' % (Time.now - from)}"
    }
    raise e
  rescue => e
    Termtter::Client.logger.debug {
      "rubytter_proxy: #{method}(#{modified_args.inspect[1...-1]}) #{e.message}"
    }
    raise e
  end
  result
end
safe() click to toggle source
# File lib/termtter/rubytter_proxy.rb, line 114
def safe
  new_instance = self.class.new(@rubytter)
  new_instance.safe_mode = true
  self.instance_variables.each do |v|
    new_instance.instance_variable_set(v, self.instance_variable_get(v))
  end
  new_instance
end
store_status_cache(status) click to toggle source
# File lib/termtter/rubytter_proxy.rb, line 98
def store_status_cache(status)
  Termtter::Client.memory_cache.set(
    ['status', status.id].join('-'), status.to_hash, 3600 * 24 * 14)
  store_user_cache(status.user)
end
store_user_cache(user) click to toggle source
# File lib/termtter/rubytter_proxy.rb, line 104
def store_user_cache(user)
  Termtter::Client.memory_cache.set(
    ['user', user.id.to_i].join('-'),
    user.to_hash, 3600 * 24)
  Termtter::Client.memory_cache.set(
    ['user', Termtter::Client.normalize_as_user_name(user.screen_name)].join('-'),
    user.to_hash, 3600 * 24)
end

Private Instance Methods

error_html_message(e)
Also aliased as: error_html_message_orig