class ExTwitter::Client
Constants
- INDENT
Attributes
authenticated_user[R]
cache[R]
call_count[RW]
logger[R]
Public Class Methods
logger()
click to toggle source
# File lib/ex_twitter/client.rb, line 34 def self.logger @@logger end
new(options = {})
click to toggle source
Calls superclass method
# File lib/ex_twitter/client.rb, line 16 def initialize(options = {}) @cache = ActiveSupport::Cache::FileStore.new(File.join('tmp', 'api_cache')) @call_count = 0 @uid = options.has_key?(:uid) ? options.delete(:uid).to_i : nil @screen_name = options.has_key?(:screen_name) ? options.delete(:screen_name).to_s : nil @@logger = @logger = if options[:logger] options.delete(:logger) else Dir.mkdir('log') unless File.exists?('log') Logger.new('log/ex_twitter.log') end super end
Public Instance Methods
twitter_addiction_series(times)
click to toggle source
# File lib/ex_twitter/client.rb, line 107 def twitter_addiction_series(times) five_mins = 5.minutes wday_expended_seconds = (0..6).each_with_object((0..6).map { |n| [n, nil] }.to_h) do |wday, wday_memo| target_times = times.select { |t| t.wday == wday } wday_memo[wday] = target_times.empty? ? nil : target_times.each_cons(2).map {|a, b| (a - b) < five_mins ? a - b : five_mins }.sum end days = times.map{|t| t.to_date.to_s(:long) }.uniq.size weeks = (days > 7) ? days / 7.0 : 1.0 wday_expended_seconds.map { |k, v| [I18n.t('date.abbr_day_names')[k], (v.nil? ? nil : v / weeks / 60)] }.map do |key, value| {name: key, y: value} end end
usage_stats(user, options = {})
click to toggle source
# File lib/ex_twitter/client.rb, line 121 def usage_stats(user, options = {}) n_days_ago = options.has_key?(:days) ? options[:days].days.ago : 100.years.ago tweets = options.has_key?(:tweets) ? options.delete(:tweets) : user_timeline(user) times = # TODO Use user specific time zone tweets.map { |t| ActiveSupport::TimeZone['Tokyo'].parse(t.created_at.to_s) }. select { |t| t > n_days_ago } [ usage_stats_wday_series_data(times), usage_stats_wday_drilldown_series(times), usage_stats_hour_series_data(times), usage_stats_hour_drilldown_series(times), twitter_addiction_series(times) ] end
usage_stats_hour_drilldown_series(times)
click to toggle source
# File lib/ex_twitter/client.rb, line 94 def usage_stats_hour_drilldown_series(times) wday_count = (0..23).each_with_object((0..23).map { |n| [n, nil] }.to_h) do |hour, hour_memo| hour_memo[hour] = times.select { |t| t.hour == hour }.map { |t| t.wday }.each_with_object((0..6).map { |n| [n, 0] }.to_h) do |wday, wday_memo| wday_memo[wday] += 1 end end wday_count.map do |key, value| {name: key.to_s, id: key.to_s, data: value.to_a.map{|a| [I18n.t('date.abbr_day_names')[a[0]], a[1]] }} end end
usage_stats_hour_series_data(times)
click to toggle source
# File lib/ex_twitter/client.rb, line 85 def usage_stats_hour_series_data(times) hour_count = times.each_with_object((0..23).map { |n| [n, 0] }.to_h) do |time, memo| memo[time.hour] += 1 end hour_count.map do |key, value| {name: key.to_s, y: value, drilldown: key.to_s} end end
usage_stats_wday_drilldown_series(times)
click to toggle source
# File lib/ex_twitter/client.rb, line 72 def usage_stats_wday_drilldown_series(times) hour_count = (0..6).each_with_object((0..6).map { |n| [n, nil] }.to_h) do |wday, wday_memo| wday_memo[wday] = times.select { |t| t.wday == wday }.map { |t| t.hour }.each_with_object((0..23).map { |n| [n, 0] }.to_h) do |hour, hour_memo| hour_memo[hour] += 1 end end hour_count.map { |k, v| [I18n.t('date.abbr_day_names')[k], v] }.map do |key, value| {name: key, id: key, data: value.to_a.map{|a| [a[0].to_s, a[1]] }} end end
usage_stats_wday_series_data(times)
click to toggle source
# File lib/ex_twitter/client.rb, line 63 def usage_stats_wday_series_data(times) wday_count = times.each_with_object((0..6).map { |n| [n, 0] }.to_h) do |time, memo| memo[time.wday] += 1 end wday_count.map { |k, v| [I18n.t('date.abbr_day_names')[k], v] }.map do |key, value| {name: key, y: value, drilldown: key} end end