class BasisBand
Attributes
api[RW]
Public Class Methods
new(cache_dir)
click to toggle source
# File lib/basis-band.rb, line 11 def initialize(cache_dir) @cache_dir = cache_dir @api = ApiFetch.new() end
Public Instance Methods
activities_cache_filename(date)
click to toggle source
# File lib/basis-band.rb, line 32 def activities_cache_filename(date) File.join(@cache_dir, date + "_activities.json") end
activities_cache_files()
click to toggle source
# File lib/basis-band.rb, line 40 def activities_cache_files() Dir[File.join(@cache_dir, "*_activities.json")] end
activities_for_all()
click to toggle source
# File lib/basis-band.rb, line 52 def activities_for_all activities = activities_cache_files.collect { |f| date = File.basename(f, "_activities.json") [d, cached_value(f)] } Hash[activities] end
activities_for_day(token, date)
click to toggle source
# File lib/basis-band.rb, line 22 def activities_for_day(token, date) with_cache(activities_cache_filename(date)) { |filename| fetch_activities_value(token, date, filename) } end
cached_value(filename)
click to toggle source
# File lib/basis-band.rb, line 64 def cached_value(filename) raw = nil begin File.open(filename, "r") { |f| raw = f.read } rescue # ignore exception end raw end
fetch_activities_value(token, date, filename)
click to toggle source
# File lib/basis-band.rb, line 92 def fetch_activities_value(token, date, filename) fetch_result_w_cache(filename) { @api.get_day_activities(token, date) } end
fetch_metrics_value(userid, date, filename)
click to toggle source
# File lib/basis-band.rb, line 86 def fetch_metrics_value(userid, date, filename) fetch_result_w_cache(filename) { @api.get_day_metrics(userid, date) } end
fetch_result_w_cache(filename) { || ... }
click to toggle source
# File lib/basis-band.rb, line 76 def fetch_result_w_cache(filename) r = yield if r File.open(filename, "w") { |f| f.write(r) } end r end
metrics_cache_filename(date)
click to toggle source
# File lib/basis-band.rb, line 28 def metrics_cache_filename(date) File.join(@cache_dir, date + "_metrics.json") end
metrics_cache_files()
click to toggle source
# File lib/basis-band.rb, line 36 def metrics_cache_files() Dir[File.join(@cache_dir, "*_metrics.json")] end
metrics_for_all()
click to toggle source
# File lib/basis-band.rb, line 44 def metrics_for_all metrics = metrics_cache_files.collect { |f| date = File.basename(f, "_metrics.json") [date, cached_value(f)] } Hash[metrics] end
metrics_for_day(userid, date)
click to toggle source
# File lib/basis-band.rb, line 16 def metrics_for_day(userid, date) with_cache(metrics_cache_filename(date)) { |filename| fetch_metrics_value(userid, date, filename) } end
with_cache(filename) { |filename| ... }
click to toggle source
# File lib/basis-band.rb, line 60 def with_cache(filename) cached_value(filename) || yield(filename) end