fitgem_oauth2 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a44729eac25ad59456fd80349a81601d3cfb0b1d
4
- data.tar.gz: e25cdbdb1aa13afbee75be71346cedd79017f5e2
3
+ metadata.gz: ae7eec9fd825f4fc19feafe55ca51d3b6e176fdd
4
+ data.tar.gz: 0b1d4f6fb319465919049c96c8d4e2f731ad22c8
5
5
  SHA512:
6
- metadata.gz: 57e3f6d902486eb0cccdd97287679ada85f37292a23d919c2609e8b8d25b2e094208db0787c0ef848f6f764fd22d976ad266494f31fd4b687150f1f7297b1d05
7
- data.tar.gz: b78b7552f6cff0b355d6a90a9d7fc349a2499a9a195066d7ae744158b1906d948518438285070fa5a9c163ce6b5c163330d248aaaca059e6178ff333ba7f87ba
6
+ metadata.gz: 49b06536b0b23e8645666d85c67081a047ca2b125b1398fa1cde532f441a65cdd10c1f5d2c657df14fed795e6ffaccbbb6690a92d81f77039616e960a1000931
7
+ data.tar.gz: '0691da40e4d1dcf14757ecd6656a5b391d537223bb00f09d8028327b7f79e201711d71f0538619578cc1d467a50041ddb428366c6ab73200ed3abda847baa7c5'
@@ -107,10 +107,10 @@ module FitgemOauth2
107
107
  },
108
108
  201 => lambda { },
109
109
  204 => lambda { },
110
- 400 => lambda { raise FitgemOauth2::BadRequestError, JSON.parse(response.body) },
111
- 401 => lambda { raise FitgemOauth2::UnauthorizedError, JSON.parse(response.body) },
112
- 403 => lambda { raise FitgemOauth2::ForbiddenError, JSON.parse(response.body) },
113
- 404 => lambda { raise FitgemOauth2::NotFoundError, JSON.parse(response.body) },
110
+ 400 => lambda { raise FitgemOauth2::BadRequestError },
111
+ 401 => lambda { raise FitgemOauth2::UnauthorizedError },
112
+ 403 => lambda { raise FitgemOauth2::ForbiddenError },
113
+ 404 => lambda { raise FitgemOauth2::NotFoundError },
114
114
  500..599 => lambda { raise FitgemOauth2::ServerError }
115
115
  }
116
116
 
@@ -9,9 +9,32 @@ module FitgemOauth2
9
9
  # Food or Water Series
10
10
  # ==================================
11
11
 
12
+ def food_series_for_date_range(start_date, end_date)
13
+ validate_start_date(start_date)
14
+ validate_end_date(end_date)
15
+ get_call(food_series_url(user_id, format_date(start_date), format_date(end_date)))
16
+ end
12
17
 
13
- def food_series(resource: nil, start_date: nil, end_date: nil, period: nil)
18
+ def food_series_for_period(start_date, period)
19
+ validate_start_date(start_date)
20
+ validate_food_series_period(period)
21
+ get_call(food_series_url(user_id, format_date(start_date), period))
22
+ end
23
+
24
+ def water_series_for_date_range(start_date, end_date)
25
+ validate_start_date(start_date)
26
+ validate_end_date(end_date)
27
+ get_call(water_series_url(user_id, format_date(start_date), format_date(end_date)))
28
+ end
29
+
30
+ def water_series_for_period(start_date, period)
31
+ validate_start_date(start_date)
32
+ validate_food_series_period(period)
33
+ get_call(water_series_url(user_id, format_date(start_date), period))
34
+ end
14
35
 
36
+ def food_series(resource: nil, start_date: nil, end_date: nil, period: nil)
37
+ warn '[DEPRECATED] use `food_series_for_date_range`, `food_series_for_period`, `water_series_for_date_range`, or `water_series_for_period` instead.'
15
38
  unless FOOD_SERIES_RESOURCES.include?(resource)
16
39
  raise FitgemOauth2::InvalidArgumentError, "Invalid resource: #{resource}. Specify a valid resource from #{FOOD_SERIES_RESOURCES}"
17
40
  end
@@ -153,5 +176,21 @@ module FitgemOauth2
153
176
  def search_foods(params)
154
177
  post_call('foods/search.json', params)
155
178
  end
179
+
180
+ private
181
+ def validate_food_series_period(period)
182
+ unless FOOD_SERIES_PERIODS.include?(period)
183
+ raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Specify a valid period from #{FOOD_SERIES_PERIODS}"
184
+ end
185
+ end
186
+
187
+
188
+ def food_series_url(user_id, start_date, end_date_or_period)
189
+ ['user', user_id, 'foods/log/caloriesIn', 'date', start_date, end_date_or_period].join('/') + '.json'
190
+ end
191
+
192
+ def water_series_url(user_id, start_date, end_date_or_period)
193
+ ['user', user_id, 'foods/log/water', 'date', start_date, end_date_or_period].join('/') + '.json'
194
+ end
156
195
  end
157
196
  end
@@ -4,12 +4,70 @@ module FitgemOauth2
4
4
  HR_PERIODS = %w(1d 7d 30d 1w 1m)
5
5
  HR_DETAIL_LEVELS = %w(1sec 1min)
6
6
 
7
+ def hr_series_for_date_range(start_date, end_date)
8
+ validate_start_date(start_date)
9
+ validate_end_date(end_date)
10
+
11
+ url = ['user', user_id, 'activities/heart/date', format_date(start_date), format_date(end_date)].join('/')
12
+ get_call(url + '.json')
13
+ end
14
+
15
+ def hr_series_for_period(start_date, period)
16
+ validate_start_date(start_date)
17
+ validate_hr_period(period)
18
+
19
+ url = ['user', user_id, 'activities/heart/date', format_date(start_date), period].join('/')
20
+ get_call(url + '.json')
21
+ end
22
+
7
23
  # retrieve heartrate time series
8
24
  def heartrate_time_series(start_date: nil, end_date: nil, period: nil)
9
- unless start_date
10
- raise FitgemOauth2::InvalidArgumentError, 'Start date not provided.'
25
+ warn "[DEPRECATION] `heartrate_time_series` is deprecated. Please use `hr_series_for_date_range` or `hr_series_for_period` instead."
26
+
27
+ regular_time_series_guard(
28
+ start_date: start_date,
29
+ end_date: end_date,
30
+ period: period
31
+ )
32
+
33
+ second = period || format_date(end_date)
34
+
35
+ url = ['user', user_id, 'activities/heart/date', format_date(start_date), second].join('/')
36
+
37
+ get_call(url + '.json')
38
+ end
39
+
40
+ # retrieve intraday series for heartrate
41
+ def intraday_heartrate_time_series(start_date: nil, end_date: nil, detail_level: nil, start_time: nil, end_time: nil)
42
+ intraday_series_guard(
43
+ start_date: start_date,
44
+ end_date: end_date,
45
+ detail_level: detail_level,
46
+ start_time: start_time,
47
+ end_time: end_time
48
+ )
49
+
50
+ end_date = format_date(end_date) || '1d'
51
+
52
+ url = ['user', user_id, 'activities/heart/date', format_date(start_date), end_date, detail_level].join('/')
53
+
54
+ if start_time && end_time
55
+ url = [url, 'time', format_time(start_time), format_time(end_time)].join('/')
11
56
  end
12
57
 
58
+ get_call(url + '.json')
59
+ end
60
+
61
+ private
62
+ def validate_hr_period(period)
63
+ unless period && HR_PERIODS.include?(period)
64
+ raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Valid periods are #{HR_PERIODS}."
65
+ end
66
+ end
67
+
68
+ def regular_time_series_guard(start_date:, end_date:, period:)
69
+ validate_start_date(start_date)
70
+
13
71
  if end_date && period
14
72
  raise FitgemOauth2::InvalidArgumentError, 'Both end_date and period specified. Specify only one.'
15
73
  end
@@ -18,19 +76,11 @@ module FitgemOauth2
18
76
  raise FitgemOauth2::InvalidArgumentError, 'Neither end_date nor period specified. Specify at least one.'
19
77
  end
20
78
 
21
- if period && !HR_PERIODS.include?(period)
22
- raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Valid periods are #{HR_PERIODS}."
23
- end
24
-
25
- second = period || format_date(end_date)
26
-
27
- url = ['user', user_id, 'activities/heart/date', format_date(start_date), second].join('/')
28
-
29
- get_call(url + '.json')
79
+ validate_hr_period(period) if period
30
80
  end
31
81
 
32
- # retrieve intraday series for heartrate
33
- def intraday_heartrate_time_series(start_date: nil, end_date: nil, detail_level: nil, start_time: nil, end_time: nil)
82
+
83
+ def intraday_series_guard(start_date:, end_date:, detail_level:, start_time:, end_time:)
34
84
  unless start_date
35
85
  raise FitgemOauth2::InvalidArgumentError, 'Start date not provided.'
36
86
  end
@@ -39,19 +89,9 @@ module FitgemOauth2
39
89
  raise FitgemOauth2::InvalidArgumentError, "Please specify the defail level. Detail level should be one of #{HR_DETAIL_LEVELS}."
40
90
  end
41
91
 
42
- end_date = format_date(end_date) || '1d'
43
-
44
- url = ['user', user_id, 'activities/heart/date', format_date(start_date), end_date, detail_level].join('/')
45
-
46
92
  if (start_time && !end_time) || (end_time && !start_time)
47
93
  raise FitgemOauth2::InvalidArgumentError, 'Either specify both the start_time and end_time or specify neither.'
48
94
  end
49
-
50
- if start_time && end_time
51
- url = [url, 'time', format_time(start_time), format_time(end_time)].join('/')
52
- end
53
-
54
- get_call(url + '.json')
55
95
  end
56
96
  end
57
97
  end
@@ -2,7 +2,6 @@ module FitgemOauth2
2
2
  class Client
3
3
 
4
4
  def format_date(date)
5
-
6
5
  if !date
7
6
  return nil
8
7
  end
@@ -30,6 +29,18 @@ module FitgemOauth2
30
29
  end
31
30
  end
32
31
 
32
+ def validate_start_date(start_date)
33
+ unless start_date
34
+ raise FitgemOauth2::InvalidArgumentError, 'Please specify a valid start date.'
35
+ end
36
+ end
37
+
38
+ def validate_end_date(end_date)
39
+ unless end_date
40
+ raise FitgemOauth2::InvalidArgumentError, 'Please specify a valid end date.'
41
+ end
42
+ end
43
+
33
44
  private
34
45
  def date_from_semantic(semantic)
35
46
  if semantic === 'yesterday'
@@ -1,3 +1,3 @@
1
1
  module FitgemOauth2
2
- VERSION = '1.1.2'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fitgem_oauth2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ankit Gupta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-08 00:00:00.000000000 Z
11
+ date: 2018-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -107,9 +107,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.4.6
110
+ rubygems_version: 2.5.2
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Fitbit API client library
114
114
  test_files: []
115
- has_rdoc: