def call_rubytter(method, *args, &block)
raise FrequentAccessError if @safe_mode && !self.current_limit.safe?
config.retry.times do |now|
begin
timeout(config.timeout) do
return @rubytter.__send__(method, *args, &block)
end
rescue Rubytter::APIError => e
if /Status is over 140 characters/ =~ e.message
len = args[0].charsize
e2 = Rubytter::APIError.new("#{e.message} (+#{len - 140})")
e2.set_backtrace(e.backtrace)
raise e2
else
raise
end
rescue JSON::ParserError => e
if message = error_html_message(e)
puts message
raise Rubytter::APIError.new(message)
else
raise e
end
rescue StandardError, TimeoutError => e
if now + 1 == config.retry
raise e
else
Termtter::Client.logger.debug { "rubytter_proxy: retry (#{e.class.to_s}: #{e.message})" }
end
end
end
end