Class: ApiFetch

Inherits:
Object
  • Object
show all
Defined in:
lib/basis-band/api-fetch.rb

Constant Summary collapse

@@metrics =
[:heartrate, :steps, :calories, :gsr, :skin_temp, :air_temp]

Instance Method Summary collapse

Instance Method Details

#activities_url(date) ⇒ Object



34
35
36
# File 'lib/basis-band/api-fetch.rb', line 34

def activities_url(date)
  "https://app.mybasis.com/api/v2/users/me/days/#{date}/activities?expand=activities&type=run,walk,bike"
end

#filter_params(date, summary, body_states) ⇒ Object



15
16
17
18
19
20
# File 'lib/basis-band/api-fetch.rb', line 15

def filter_params(date, summary, body_states)
  p = ['interval=60', 'units=s', "start_date=#{date}", 'start_offset=0', 'end_offset=0']
  p << flag_value('summary', summary)
  p << flag_value('bodystates', body_states)
  p.join('&')
end

#flag_value(name, bool) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/basis-band/api-fetch.rb', line 7

def flag_value(name, bool)
  if bool
    "#{name}=true"
  else
    "#{name}=false"
  end
end

#get_day_activities(token, date) ⇒ Object



62
63
64
65
# File 'lib/basis-band/api-fetch.rb', line 62

def get_day_activities(token, date)
  res = https_fetch_v2(activities_url(date), token)
  res
end

#get_day_metrics(userid, date, summary = true, body_states = true, skip_metrics = []) ⇒ Object



57
58
59
60
# File 'lib/basis-band/api-fetch.rb', line 57

def get_day_metrics(userid, date, summary = true, body_states = true, skip_metrics = [])
  res = https_fetch(url(userid, date, summary, body_states, skip_metrics))
  res
end

#https_fetch(url) ⇒ Object



38
39
40
41
42
43
44
45
# File 'lib/basis-band/api-fetch.rb', line 38

def https_fetch(url)
  u = URI.parse(url)
  http = Net::HTTP.new(u.host, u.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
  request = Net::HTTP::Get.new(u.request_uri)
  http.request(request).body
end

#https_fetch_v2(url, token) ⇒ Object



47
48
49
50
51
52
53
54
55
# File 'lib/basis-band/api-fetch.rb', line 47

def https_fetch_v2(url, token)
  u = URI.parse(url)
  http = Net::HTTP.new(u.host, u.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
  request = Net::HTTP::Get.new(u.request_uri)
  request.add_field('Cookie', "access_token=#{token}; scope=login")
  http.request(request).body
end

#metric_params(skip) ⇒ Object



22
23
24
25
26
# File 'lib/basis-band/api-fetch.rb', line 22

def metric_params(skip)
  @@metrics.collect { |m|
    flag_value(m.id2name, !skip.include?(m))
  }.join("&")
end

#url(userid, date, summary, body_states, skip_metrics) ⇒ Object



28
29
30
31
32
# File 'lib/basis-band/api-fetch.rb', line 28

def url(userid, date, summary, body_states, skip_metrics)
  f = filter_params(date, summary, body_states)
  m = metric_params(skip_metrics)
  "https://app.mybasis.com/api/v1/chart/#{userid}.json?#{f}&#{m}"
end