fitgem_oauth2 1.3.0 → 2.0.1
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 +4 -4
- data/fitgem_oauth2.gemspec +22 -22
- data/lib/fitgem_oauth2.rb +6 -6
- data/lib/fitgem_oauth2/activity.rb +209 -209
- data/lib/fitgem_oauth2/body_measurements.rb +163 -163
- data/lib/fitgem_oauth2/client.rb +126 -125
- data/lib/fitgem_oauth2/devices.rb +45 -45
- data/lib/fitgem_oauth2/errors.rb +30 -27
- data/lib/fitgem_oauth2/food.rb +27 -27
- data/lib/fitgem_oauth2/food/collection.rb +51 -51
- data/lib/fitgem_oauth2/food/metadata.rb +63 -63
- data/lib/fitgem_oauth2/food/series.rb +55 -55
- data/lib/fitgem_oauth2/friends.rb +44 -44
- data/lib/fitgem_oauth2/heartrate.rb +85 -85
- data/lib/fitgem_oauth2/sleep.rb +86 -86
- data/lib/fitgem_oauth2/subscriptions.rb +32 -32
- data/lib/fitgem_oauth2/users.rb +7 -7
- data/lib/fitgem_oauth2/utils.rb +48 -48
- data/lib/fitgem_oauth2/version.rb +3 -3
- metadata +3 -4
@@ -1,45 +1,45 @@
|
|
1
|
-
module FitgemOauth2
|
2
|
-
class Client
|
3
|
-
|
4
|
-
# ==================================
|
5
|
-
# Devices
|
6
|
-
# ==================================
|
7
|
-
|
8
|
-
# return list of Fitbit devices linked to the account
|
9
|
-
def devices
|
10
|
-
get_call("user/#{user_id}/devices.json")
|
11
|
-
end
|
12
|
-
|
13
|
-
# ==================================
|
14
|
-
# Alarams
|
15
|
-
# ==================================
|
16
|
-
|
17
|
-
# returns list of alarams for the tracker ID
|
18
|
-
# @param tracker_id ID for the tracker for which alarams need to be retrieved
|
19
|
-
def alarms(tracker_id)
|
20
|
-
get_call("user/#{user_id}/devices/tracker/#{tracker_id}/alarms.json")
|
21
|
-
end
|
22
|
-
|
23
|
-
# adds an alaram
|
24
|
-
# @param tracker_id ID of the tracker to which the alaram needs to be added
|
25
|
-
# @param params POST parameters for adding the alarm
|
26
|
-
def add_alarm(tracker_id, params)
|
27
|
-
post_call("user/#{user_id}/devices/tracker/#{tracker_id}/alarms.json", params)
|
28
|
-
end
|
29
|
-
|
30
|
-
# update an existing alarm
|
31
|
-
# @param tracker_id ID of the tracker to which alaram needs to be added.
|
32
|
-
# @param alarm_id ID of the alarm that needs to be updated
|
33
|
-
# @param params POST parameters for updating the alarm
|
34
|
-
def update_alarm(tracker_id, alarm_id, params)
|
35
|
-
post_call("user/#{user_id}/devices/tracker/#{tracker_id}/alarms/#{alarm_id}.json", params)
|
36
|
-
end
|
37
|
-
|
38
|
-
# removes an existing alaram
|
39
|
-
# @param tracker_id ID of the tracker from which alaram needs to be removed
|
40
|
-
# @params alarm_id ID of the alaram that needs to be removed
|
41
|
-
def remove_alarm(tracker_id, alarm_id)
|
42
|
-
delete_call("user/#{user_id}/devices/tracker/#{tracker_id}/alarms/#{alarm_id}.json")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
1
|
+
module FitgemOauth2
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# ==================================
|
5
|
+
# Devices
|
6
|
+
# ==================================
|
7
|
+
|
8
|
+
# return list of Fitbit devices linked to the account
|
9
|
+
def devices
|
10
|
+
get_call("user/#{user_id}/devices.json")
|
11
|
+
end
|
12
|
+
|
13
|
+
# ==================================
|
14
|
+
# Alarams
|
15
|
+
# ==================================
|
16
|
+
|
17
|
+
# returns list of alarams for the tracker ID
|
18
|
+
# @param tracker_id ID for the tracker for which alarams need to be retrieved
|
19
|
+
def alarms(tracker_id)
|
20
|
+
get_call("user/#{user_id}/devices/tracker/#{tracker_id}/alarms.json")
|
21
|
+
end
|
22
|
+
|
23
|
+
# adds an alaram
|
24
|
+
# @param tracker_id ID of the tracker to which the alaram needs to be added
|
25
|
+
# @param params POST parameters for adding the alarm
|
26
|
+
def add_alarm(tracker_id, params)
|
27
|
+
post_call("user/#{user_id}/devices/tracker/#{tracker_id}/alarms.json", params)
|
28
|
+
end
|
29
|
+
|
30
|
+
# update an existing alarm
|
31
|
+
# @param tracker_id ID of the tracker to which alaram needs to be added.
|
32
|
+
# @param alarm_id ID of the alarm that needs to be updated
|
33
|
+
# @param params POST parameters for updating the alarm
|
34
|
+
def update_alarm(tracker_id, alarm_id, params)
|
35
|
+
post_call("user/#{user_id}/devices/tracker/#{tracker_id}/alarms/#{alarm_id}.json", params)
|
36
|
+
end
|
37
|
+
|
38
|
+
# removes an existing alaram
|
39
|
+
# @param tracker_id ID of the tracker from which alaram needs to be removed
|
40
|
+
# @params alarm_id ID of the alaram that needs to be removed
|
41
|
+
def remove_alarm(tracker_id, alarm_id)
|
42
|
+
delete_call("user/#{user_id}/devices/tracker/#{tracker_id}/alarms/#{alarm_id}.json")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/fitgem_oauth2/errors.rb
CHANGED
@@ -1,27 +1,30 @@
|
|
1
|
-
module FitgemOauth2
|
2
|
-
class InvalidDateArgument < ArgumentError
|
3
|
-
end
|
4
|
-
|
5
|
-
class InvalidTimeArgument < ArgumentError
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
class InvalidArgumentError < ArgumentError
|
10
|
-
end
|
11
|
-
|
12
|
-
# HTTP errors
|
13
|
-
class BadRequestError < StandardError
|
14
|
-
end
|
15
|
-
|
16
|
-
class UnauthorizedError < StandardError
|
17
|
-
end
|
18
|
-
|
19
|
-
class ForbiddenError < StandardError
|
20
|
-
end
|
21
|
-
|
22
|
-
class NotFoundError < StandardError
|
23
|
-
end
|
24
|
-
|
25
|
-
class
|
26
|
-
end
|
27
|
-
|
1
|
+
module FitgemOauth2
|
2
|
+
class InvalidDateArgument < ArgumentError
|
3
|
+
end
|
4
|
+
|
5
|
+
class InvalidTimeArgument < ArgumentError
|
6
|
+
|
7
|
+
end
|
8
|
+
|
9
|
+
class InvalidArgumentError < ArgumentError
|
10
|
+
end
|
11
|
+
|
12
|
+
# HTTP errors
|
13
|
+
class BadRequestError < StandardError
|
14
|
+
end
|
15
|
+
|
16
|
+
class UnauthorizedError < StandardError
|
17
|
+
end
|
18
|
+
|
19
|
+
class ForbiddenError < StandardError
|
20
|
+
end
|
21
|
+
|
22
|
+
class NotFoundError < StandardError
|
23
|
+
end
|
24
|
+
|
25
|
+
class ApiLimitError < StandardError
|
26
|
+
end
|
27
|
+
|
28
|
+
class ServerError < StandardError
|
29
|
+
end
|
30
|
+
end
|
data/lib/fitgem_oauth2/food.rb
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
require 'fitgem_oauth2/food/collection.rb'
|
2
|
-
require 'fitgem_oauth2/food/series.rb'
|
3
|
-
require 'fitgem_oauth2/food/metadata.rb'
|
4
|
-
|
5
|
-
module FitgemOauth2
|
6
|
-
class Client
|
7
|
-
|
8
|
-
FOOD_SERIES_RESOURCES = %w[caloriesIn water].freeze
|
9
|
-
FOOD_SERIES_PERIODS = %w[1d 7d 30d 1w 1m 3m 6m 1y max].freeze
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def validate_food_series_period(period)
|
14
|
-
unless FOOD_SERIES_PERIODS.include?(period)
|
15
|
-
raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Specify a valid period from #{FOOD_SERIES_PERIODS}"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def food_series_url(user_id, start_date, end_date_or_period)
|
20
|
-
['user', user_id, 'foods/log/caloriesIn', 'date', start_date, end_date_or_period].join('/') + '.json'
|
21
|
-
end
|
22
|
-
|
23
|
-
def water_series_url(user_id, start_date, end_date_or_period)
|
24
|
-
['user', user_id, 'foods/log/water', 'date', start_date, end_date_or_period].join('/') + '.json'
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
1
|
+
require 'fitgem_oauth2/food/collection.rb'
|
2
|
+
require 'fitgem_oauth2/food/series.rb'
|
3
|
+
require 'fitgem_oauth2/food/metadata.rb'
|
4
|
+
|
5
|
+
module FitgemOauth2
|
6
|
+
class Client
|
7
|
+
|
8
|
+
FOOD_SERIES_RESOURCES = %w[caloriesIn water].freeze
|
9
|
+
FOOD_SERIES_PERIODS = %w[1d 7d 30d 1w 1m 3m 6m 1y max].freeze
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def validate_food_series_period(period)
|
14
|
+
unless FOOD_SERIES_PERIODS.include?(period)
|
15
|
+
raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Specify a valid period from #{FOOD_SERIES_PERIODS}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def food_series_url(user_id, start_date, end_date_or_period)
|
20
|
+
['user', user_id, 'foods/log/caloriesIn', 'date', start_date, end_date_or_period].join('/') + '.json'
|
21
|
+
end
|
22
|
+
|
23
|
+
def water_series_url(user_id, start_date, end_date_or_period)
|
24
|
+
['user', user_id, 'foods/log/water', 'date', start_date, end_date_or_period].join('/') + '.json'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,51 +1,51 @@
|
|
1
|
-
module FitgemOauth2
|
2
|
-
class Client
|
3
|
-
def food_goals
|
4
|
-
get_call("user/#{user_id}/foods/log/goal.json")
|
5
|
-
end
|
6
|
-
|
7
|
-
def food_logs(date)
|
8
|
-
get_call("user/#{user_id}/foods/log/date/#{format_date(date)}.json")
|
9
|
-
end
|
10
|
-
|
11
|
-
def water_logs(date)
|
12
|
-
get_call("user/#{user_id}/foods/log/water/date/#{format_date(date)}.json")
|
13
|
-
end
|
14
|
-
|
15
|
-
def water_goal
|
16
|
-
get_call("user/#{user_id}/foods/log/water/goal.json")
|
17
|
-
end
|
18
|
-
|
19
|
-
def log_food(params)
|
20
|
-
post_call("user/#{user_id}/foods/log.json", params)
|
21
|
-
end
|
22
|
-
|
23
|
-
def update_food_log(food_log_id, params)
|
24
|
-
post_call("user/#{user_id}/foods/log/#{food_log_id}.json", params)
|
25
|
-
end
|
26
|
-
|
27
|
-
def log_water(params)
|
28
|
-
post_call("user/#{user_id}/foods/log/water.json", params)
|
29
|
-
end
|
30
|
-
|
31
|
-
def update_food_goal(params)
|
32
|
-
post_call("user/#{user_id}/foods/log/goal.json", params)
|
33
|
-
end
|
34
|
-
|
35
|
-
def update_water_goal(params)
|
36
|
-
post_call("user/#{user_id}/foods/log/water/goal.json", params)
|
37
|
-
end
|
38
|
-
|
39
|
-
def delete_food_log(food_log_id)
|
40
|
-
delete_call("user/#{user_id}/foods/log/#{food_log_id}.json")
|
41
|
-
end
|
42
|
-
|
43
|
-
def update_water_log(water_log_id, params)
|
44
|
-
post_call("user/#{user_id}/foods/log/water/#{water_log_id}.json", params)
|
45
|
-
end
|
46
|
-
|
47
|
-
def delete_water_log(water_log_id)
|
48
|
-
delete_call("user/#{user_id}/foods/log/water/#{water_log_id}.json")
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
1
|
+
module FitgemOauth2
|
2
|
+
class Client
|
3
|
+
def food_goals
|
4
|
+
get_call("user/#{user_id}/foods/log/goal.json")
|
5
|
+
end
|
6
|
+
|
7
|
+
def food_logs(date)
|
8
|
+
get_call("user/#{user_id}/foods/log/date/#{format_date(date)}.json")
|
9
|
+
end
|
10
|
+
|
11
|
+
def water_logs(date)
|
12
|
+
get_call("user/#{user_id}/foods/log/water/date/#{format_date(date)}.json")
|
13
|
+
end
|
14
|
+
|
15
|
+
def water_goal
|
16
|
+
get_call("user/#{user_id}/foods/log/water/goal.json")
|
17
|
+
end
|
18
|
+
|
19
|
+
def log_food(params)
|
20
|
+
post_call("user/#{user_id}/foods/log.json", params)
|
21
|
+
end
|
22
|
+
|
23
|
+
def update_food_log(food_log_id, params)
|
24
|
+
post_call("user/#{user_id}/foods/log/#{food_log_id}.json", params)
|
25
|
+
end
|
26
|
+
|
27
|
+
def log_water(params)
|
28
|
+
post_call("user/#{user_id}/foods/log/water.json", params)
|
29
|
+
end
|
30
|
+
|
31
|
+
def update_food_goal(params)
|
32
|
+
post_call("user/#{user_id}/foods/log/goal.json", params)
|
33
|
+
end
|
34
|
+
|
35
|
+
def update_water_goal(params)
|
36
|
+
post_call("user/#{user_id}/foods/log/water/goal.json", params)
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete_food_log(food_log_id)
|
40
|
+
delete_call("user/#{user_id}/foods/log/#{food_log_id}.json")
|
41
|
+
end
|
42
|
+
|
43
|
+
def update_water_log(water_log_id, params)
|
44
|
+
post_call("user/#{user_id}/foods/log/water/#{water_log_id}.json", params)
|
45
|
+
end
|
46
|
+
|
47
|
+
def delete_water_log(water_log_id)
|
48
|
+
delete_call("user/#{user_id}/foods/log/water/#{water_log_id}.json")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -1,63 +1,63 @@
|
|
1
|
-
module FitgemOauth2
|
2
|
-
class Client
|
3
|
-
def add_favorite_food(food_id)
|
4
|
-
post_call("user/#{user_id}/foods/log/favorite/#{food_id}.json")
|
5
|
-
end
|
6
|
-
|
7
|
-
def delete_favorite_food(food_id)
|
8
|
-
delete_call("user/#{user_id}/foods/log/favorite/#{food_id}.json")
|
9
|
-
end
|
10
|
-
|
11
|
-
def recent_foods
|
12
|
-
get_call("user/#{user_id}/foods/recent.json")
|
13
|
-
end
|
14
|
-
|
15
|
-
def favorite_foods
|
16
|
-
get_call("user/#{user_id}/foods/log/favorite.json")
|
17
|
-
end
|
18
|
-
|
19
|
-
def frequent_foods
|
20
|
-
get_call("user/#{user_id}/foods/log/frequent.json")
|
21
|
-
end
|
22
|
-
|
23
|
-
def meals
|
24
|
-
get_call("user/#{user_id}/meals.json")
|
25
|
-
end
|
26
|
-
|
27
|
-
def create_meal(params)
|
28
|
-
post_call("user/#{user_id}/meals.json", params)
|
29
|
-
end
|
30
|
-
|
31
|
-
def meal(meal_id)
|
32
|
-
get_call("user/#{user_id}/meals/#{meal_id}.json")
|
33
|
-
end
|
34
|
-
|
35
|
-
def update_meal(meal_id, params)
|
36
|
-
post_call("user/#{user_id}/meals/#{meal_id}.json", params)
|
37
|
-
end
|
38
|
-
|
39
|
-
def delete_meal(meal_id)
|
40
|
-
delete_call("user/#{user_id}/meals/#{meal_id}.json")
|
41
|
-
end
|
42
|
-
|
43
|
-
def create_food(params)
|
44
|
-
post_call("user/#{user_id}/foods.json", params)
|
45
|
-
end
|
46
|
-
|
47
|
-
def delete_food(food_id)
|
48
|
-
delete_call("user/#{user_id}/foods/#{food_id}.json")
|
49
|
-
end
|
50
|
-
|
51
|
-
def food(id)
|
52
|
-
get_call("foods/#{id}.json")
|
53
|
-
end
|
54
|
-
|
55
|
-
def food_units
|
56
|
-
get_call('foods/units.json')
|
57
|
-
end
|
58
|
-
|
59
|
-
def search_foods(params)
|
60
|
-
post_call('foods/search.json', params)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
1
|
+
module FitgemOauth2
|
2
|
+
class Client
|
3
|
+
def add_favorite_food(food_id)
|
4
|
+
post_call("user/#{user_id}/foods/log/favorite/#{food_id}.json")
|
5
|
+
end
|
6
|
+
|
7
|
+
def delete_favorite_food(food_id)
|
8
|
+
delete_call("user/#{user_id}/foods/log/favorite/#{food_id}.json")
|
9
|
+
end
|
10
|
+
|
11
|
+
def recent_foods
|
12
|
+
get_call("user/#{user_id}/foods/recent.json")
|
13
|
+
end
|
14
|
+
|
15
|
+
def favorite_foods
|
16
|
+
get_call("user/#{user_id}/foods/log/favorite.json")
|
17
|
+
end
|
18
|
+
|
19
|
+
def frequent_foods
|
20
|
+
get_call("user/#{user_id}/foods/log/frequent.json")
|
21
|
+
end
|
22
|
+
|
23
|
+
def meals
|
24
|
+
get_call("user/#{user_id}/meals.json")
|
25
|
+
end
|
26
|
+
|
27
|
+
def create_meal(params)
|
28
|
+
post_call("user/#{user_id}/meals.json", params)
|
29
|
+
end
|
30
|
+
|
31
|
+
def meal(meal_id)
|
32
|
+
get_call("user/#{user_id}/meals/#{meal_id}.json")
|
33
|
+
end
|
34
|
+
|
35
|
+
def update_meal(meal_id, params)
|
36
|
+
post_call("user/#{user_id}/meals/#{meal_id}.json", params)
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete_meal(meal_id)
|
40
|
+
delete_call("user/#{user_id}/meals/#{meal_id}.json")
|
41
|
+
end
|
42
|
+
|
43
|
+
def create_food(params)
|
44
|
+
post_call("user/#{user_id}/foods.json", params)
|
45
|
+
end
|
46
|
+
|
47
|
+
def delete_food(food_id)
|
48
|
+
delete_call("user/#{user_id}/foods/#{food_id}.json")
|
49
|
+
end
|
50
|
+
|
51
|
+
def food(id)
|
52
|
+
get_call("foods/#{id}.json")
|
53
|
+
end
|
54
|
+
|
55
|
+
def food_units
|
56
|
+
get_call('foods/units.json')
|
57
|
+
end
|
58
|
+
|
59
|
+
def search_foods(params)
|
60
|
+
post_call('foods/search.json', params)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -1,55 +1,55 @@
|
|
1
|
-
module FitgemOauth2
|
2
|
-
class Client
|
3
|
-
def food_series_for_date_range(start_date, end_date)
|
4
|
-
validate_start_date(start_date)
|
5
|
-
validate_end_date(end_date)
|
6
|
-
get_call(food_series_url(user_id, format_date(start_date), format_date(end_date)))
|
7
|
-
end
|
8
|
-
|
9
|
-
def food_series_for_period(start_date, period)
|
10
|
-
validate_start_date(start_date)
|
11
|
-
validate_food_series_period(period)
|
12
|
-
get_call(food_series_url(user_id, format_date(start_date), period))
|
13
|
-
end
|
14
|
-
|
15
|
-
def water_series_for_date_range(start_date, end_date)
|
16
|
-
validate_start_date(start_date)
|
17
|
-
validate_end_date(end_date)
|
18
|
-
get_call(water_series_url(user_id, format_date(start_date), format_date(end_date)))
|
19
|
-
end
|
20
|
-
|
21
|
-
def water_series_for_period(start_date, period)
|
22
|
-
validate_start_date(start_date)
|
23
|
-
validate_food_series_period(period)
|
24
|
-
get_call(water_series_url(user_id, format_date(start_date), period))
|
25
|
-
end
|
26
|
-
|
27
|
-
def food_series(resource: nil, start_date: nil, end_date: nil, period: nil)
|
28
|
-
warn '[DEPRECATED] use `food_series_for_date_range`, `food_series_for_period`, `water_series_for_date_range`, or `water_series_for_period` instead.'
|
29
|
-
unless FOOD_SERIES_RESOURCES.include?(resource)
|
30
|
-
raise FitgemOauth2::InvalidArgumentError, "Invalid resource: #{resource}. Specify a valid resource from #{FOOD_SERIES_RESOURCES}"
|
31
|
-
end
|
32
|
-
|
33
|
-
if end_date && period
|
34
|
-
raise FitgemOauth2::InvalidArgumentError, 'Provide only one of end_date and period.'
|
35
|
-
end
|
36
|
-
|
37
|
-
if !end_date && !period
|
38
|
-
raise FitgemOauth2::InvalidArgumentError, 'Provide at least one of end_date and period.'
|
39
|
-
end
|
40
|
-
|
41
|
-
url = ['user', user_id, 'foods/log', resource, 'date', start_date].join('/')
|
42
|
-
|
43
|
-
if period
|
44
|
-
unless FOOD_SERIES_PERIODS.include?(period)
|
45
|
-
raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Specify a valid period from #{FOOD_SERIES_PERIODS}"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
second = period || format_date(end_date)
|
50
|
-
url = [url, second].join('/')
|
51
|
-
|
52
|
-
get_call(url + '.json')
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
1
|
+
module FitgemOauth2
|
2
|
+
class Client
|
3
|
+
def food_series_for_date_range(start_date, end_date)
|
4
|
+
validate_start_date(start_date)
|
5
|
+
validate_end_date(end_date)
|
6
|
+
get_call(food_series_url(user_id, format_date(start_date), format_date(end_date)))
|
7
|
+
end
|
8
|
+
|
9
|
+
def food_series_for_period(start_date, period)
|
10
|
+
validate_start_date(start_date)
|
11
|
+
validate_food_series_period(period)
|
12
|
+
get_call(food_series_url(user_id, format_date(start_date), period))
|
13
|
+
end
|
14
|
+
|
15
|
+
def water_series_for_date_range(start_date, end_date)
|
16
|
+
validate_start_date(start_date)
|
17
|
+
validate_end_date(end_date)
|
18
|
+
get_call(water_series_url(user_id, format_date(start_date), format_date(end_date)))
|
19
|
+
end
|
20
|
+
|
21
|
+
def water_series_for_period(start_date, period)
|
22
|
+
validate_start_date(start_date)
|
23
|
+
validate_food_series_period(period)
|
24
|
+
get_call(water_series_url(user_id, format_date(start_date), period))
|
25
|
+
end
|
26
|
+
|
27
|
+
def food_series(resource: nil, start_date: nil, end_date: nil, period: nil)
|
28
|
+
warn '[DEPRECATED] use `food_series_for_date_range`, `food_series_for_period`, `water_series_for_date_range`, or `water_series_for_period` instead.'
|
29
|
+
unless FOOD_SERIES_RESOURCES.include?(resource)
|
30
|
+
raise FitgemOauth2::InvalidArgumentError, "Invalid resource: #{resource}. Specify a valid resource from #{FOOD_SERIES_RESOURCES}"
|
31
|
+
end
|
32
|
+
|
33
|
+
if end_date && period
|
34
|
+
raise FitgemOauth2::InvalidArgumentError, 'Provide only one of end_date and period.'
|
35
|
+
end
|
36
|
+
|
37
|
+
if !end_date && !period
|
38
|
+
raise FitgemOauth2::InvalidArgumentError, 'Provide at least one of end_date and period.'
|
39
|
+
end
|
40
|
+
|
41
|
+
url = ['user', user_id, 'foods/log', resource, 'date', start_date].join('/')
|
42
|
+
|
43
|
+
if period
|
44
|
+
unless FOOD_SERIES_PERIODS.include?(period)
|
45
|
+
raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Specify a valid period from #{FOOD_SERIES_PERIODS}"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
second = period || format_date(end_date)
|
50
|
+
url = [url, second].join('/')
|
51
|
+
|
52
|
+
get_call(url + '.json')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|