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