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.
@@ -1,44 +1,44 @@
1
- module FitgemOauth2
2
- class Client
3
- # retrieves list of friends for the current user
4
- def friends
5
- get_call("user/#{user_id}/friends.json")
6
- end
7
-
8
- # retrieves leaderboard for the user
9
- def friends_leaderboard
10
- get_call("user/#{user_id}/friends/leaderboard.json")
11
- end
12
-
13
- # ==================================
14
- # Friend Invitations
15
- # ==================================
16
-
17
- # send an invitation to a friend
18
- # @param params POST parameters for sending friend invite.
19
- def invite_friend(params)
20
- post_call("user/#{user_id}/friends/invitations.json", params)
21
- end
22
-
23
- # retrieve list of friend invitations
24
- def friend_invitations
25
- get_call("user/#{user_id}/friends/invitations.json")
26
- end
27
-
28
- # respond to a friend invite
29
- # @param from_user_id the ID of the friend
30
- # @param params POST parameters for responding to the invite.
31
- def respond_to_invitation(from_user_id, params)
32
- post_call("user/#{user_id}/friends/invitations/#{from_user_id}.json", params)
33
- end
34
-
35
- # ==================================
36
- # Badges
37
- # ==================================
38
-
39
- # retrieve badges for the user
40
- def badges
41
- get_call("user/#{user_id}/badges.json")
42
- end
43
- end
44
- end
1
+ module FitgemOauth2
2
+ class Client
3
+ # retrieves list of friends for the current user
4
+ def friends
5
+ get_call("user/#{user_id}/friends.json")
6
+ end
7
+
8
+ # retrieves leaderboard for the user
9
+ def friends_leaderboard
10
+ get_call("user/#{user_id}/friends/leaderboard.json")
11
+ end
12
+
13
+ # ==================================
14
+ # Friend Invitations
15
+ # ==================================
16
+
17
+ # send an invitation to a friend
18
+ # @param params POST parameters for sending friend invite.
19
+ def invite_friend(params)
20
+ post_call("user/#{user_id}/friends/invitations.json", params)
21
+ end
22
+
23
+ # retrieve list of friend invitations
24
+ def friend_invitations
25
+ get_call("user/#{user_id}/friends/invitations.json")
26
+ end
27
+
28
+ # respond to a friend invite
29
+ # @param from_user_id the ID of the friend
30
+ # @param params POST parameters for responding to the invite.
31
+ def respond_to_invitation(from_user_id, params)
32
+ post_call("user/#{user_id}/friends/invitations/#{from_user_id}.json", params)
33
+ end
34
+
35
+ # ==================================
36
+ # Badges
37
+ # ==================================
38
+
39
+ # retrieve badges for the user
40
+ def badges
41
+ get_call("user/#{user_id}/badges.json")
42
+ end
43
+ end
44
+ end
@@ -1,85 +1,85 @@
1
- module FitgemOauth2
2
- class Client
3
-
4
- HR_PERIODS = %w[1d 7d 30d 1w 1m].freeze
5
- HR_DETAIL_LEVELS = %w[1sec 1min].freeze
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
-
23
- # retrieve heartrate time series
24
- def heartrate_time_series(start_date: nil, end_date: nil, period: nil)
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('/')
56
- end
57
-
58
- get_call(url + '.json')
59
- end
60
-
61
- private
62
-
63
- def validate_hr_period(period)
64
- raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Valid periods are #{HR_PERIODS}." unless period && HR_PERIODS.include?(period)
65
- end
66
-
67
- def regular_time_series_guard(start_date:, end_date:, period:)
68
- validate_start_date(start_date)
69
-
70
- raise FitgemOauth2::InvalidArgumentError, 'Both end_date and period specified. Specify only one.' if end_date && period
71
-
72
- raise FitgemOauth2::InvalidArgumentError, 'Neither end_date nor period specified. Specify at least one.' if !end_date && !period
73
-
74
- validate_hr_period(period) if period
75
- end
76
-
77
- def intraday_series_guard(start_date:, end_date:, detail_level:, start_time:, end_time:)
78
- raise FitgemOauth2::InvalidArgumentError, 'Start date not provided.' unless start_date
79
-
80
- raise FitgemOauth2::InvalidArgumentError, "Please specify the defail level. Detail level should be one of #{HR_DETAIL_LEVELS}." unless detail_level && HR_DETAIL_LEVELS.include?(detail_level)
81
-
82
- raise FitgemOauth2::InvalidArgumentError, 'Either specify both the start_time and end_time or specify neither.' if (start_time && !end_time) || (end_time && !start_time)
83
- end
84
- end
85
- end
1
+ module FitgemOauth2
2
+ class Client
3
+
4
+ HR_PERIODS = %w[1d 7d 30d 1w 1m].freeze
5
+ HR_DETAIL_LEVELS = %w[1sec 1min].freeze
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
+
23
+ # retrieve heartrate time series
24
+ def heartrate_time_series(start_date: nil, end_date: nil, period: nil)
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('/')
56
+ end
57
+
58
+ get_call(url + '.json')
59
+ end
60
+
61
+ private
62
+
63
+ def validate_hr_period(period)
64
+ raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Valid periods are #{HR_PERIODS}." unless period && HR_PERIODS.include?(period)
65
+ end
66
+
67
+ def regular_time_series_guard(start_date:, end_date:, period:)
68
+ validate_start_date(start_date)
69
+
70
+ raise FitgemOauth2::InvalidArgumentError, 'Both end_date and period specified. Specify only one.' if end_date && period
71
+
72
+ raise FitgemOauth2::InvalidArgumentError, 'Neither end_date nor period specified. Specify at least one.' if !end_date && !period
73
+
74
+ validate_hr_period(period) if period
75
+ end
76
+
77
+ def intraday_series_guard(start_date:, end_date:, detail_level:, start_time:, end_time:)
78
+ raise FitgemOauth2::InvalidArgumentError, 'Start date not provided.' unless start_date
79
+
80
+ raise FitgemOauth2::InvalidArgumentError, "Please specify the defail level. Detail level should be one of #{HR_DETAIL_LEVELS}." unless detail_level && HR_DETAIL_LEVELS.include?(detail_level)
81
+
82
+ raise FitgemOauth2::InvalidArgumentError, 'Either specify both the start_time and end_time or specify neither.' if (start_time && !end_time) || (end_time && !start_time)
83
+ end
84
+ end
85
+ end
@@ -1,86 +1,86 @@
1
- module FitgemOauth2
2
-
3
- class Client
4
-
5
- SLEEP_RESOURCES = %w[
6
- startTime timeInBed minutesAsleep awakeningsCount minutesAwake
7
- minutesToFallAsleep minutesAfterWakeup efficiency
8
- ].freeze
9
-
10
- SLEEP_PERIODS = %w[1d 7d 30d 1w 1m 3m 6m 1y max].freeze
11
-
12
- # retrieve sleep logs for a date
13
- # @param date date for which sleep logs needs to be accessed
14
- def sleep_logs(date)
15
- get_call_1_2("user/#{user_id}/sleep/date/#{format_date(date)}.json")
16
- end
17
-
18
- def sleep_logs_by_date_range(start_date, end_date)
19
- get_call_1_2("user/#{user_id}/sleep/date/#{format_date(start_date)}/#{format_date(end_date)}.json")
20
- end
21
-
22
- def sleep_logs_list(date, sort, limit)
23
- date_param = format_date(date)
24
- if sort == 'asc'
25
- date_param = "afterDate=#{date_param}"
26
- elsif sort == 'desc'
27
- date_param = "beforeDate=#{date_param}"
28
- else
29
- raise FitgemOauth2::InvalidArgumentError, "sort can either be asc or desc"
30
- end
31
- get_call_1_2("user/#{user_id}/sleep/list.json?#{date_param}&offset=0&sort=#{sort}&limit=#{limit}")
32
- end
33
-
34
- # retrieve sleep goal for the user
35
- def sleep_goal
36
- get_call("user/#{user_id}/sleep/goal.json")
37
- end
38
-
39
- # update sleep goal
40
- # @param params POST parameters for updating sleep goal
41
- def update_sleep_goal(params)
42
- post_call("user/#{user_id}/sleep/goal.json", params)
43
- end
44
-
45
- # retrieve time series data for sleep
46
- # @param resource sleep resource to be requested
47
- # @param start_date starting date for sleep time series
48
- # @param end_date ending date for sleep time series
49
- # @param period period for sleep time series
50
- def sleep_time_series(resource: nil, start_date: nil, end_date: nil, period: nil)
51
- unless start_date
52
- raise FitgemOauth2::InvalidArgumentError, 'Start date not provided.'
53
- end
54
-
55
- unless resource && SLEEP_RESOURCES.include?(resource)
56
- raise FitgemOauth2::InvalidArgumentError, "Invalid resource: #{resource}. Valid resources are #{SLEEP_RESOURCES}."
57
- end
58
-
59
- if period && end_date
60
- raise FitgemOauth2::InvalidArgumentError, 'Both end_date and period specified. Specify only one.'
61
- end
62
-
63
- if period && !SLEEP_PERIODS.include?(period)
64
- raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Valid periods are #{SLEEP_PERIODS}."
65
- end
66
-
67
- second = period || format_date(end_date)
68
-
69
- url = ['user', user_id, 'sleep', resource, 'date', format_date(start_date), second].join('/')
70
-
71
- get_call(url + '.json')
72
- end
73
-
74
- # log sleep
75
- # @param params POST params for creating sleep log
76
- def log_sleep(params)
77
- post_call_1_2("user/#{user_id}/sleep.json", params)
78
- end
79
-
80
- # deleted sleep log
81
- # @param log_id ID of the sleep log that needs to be removed.
82
- def delete_logged_sleep(log_id)
83
- delete_call("user/#{user_id}/sleep/#{log_id}.json")
84
- end
85
- end
86
- end
1
+ module FitgemOauth2
2
+
3
+ class Client
4
+
5
+ SLEEP_RESOURCES = %w[
6
+ startTime timeInBed minutesAsleep awakeningsCount minutesAwake
7
+ minutesToFallAsleep minutesAfterWakeup efficiency
8
+ ].freeze
9
+
10
+ SLEEP_PERIODS = %w[1d 7d 30d 1w 1m 3m 6m 1y max].freeze
11
+
12
+ # retrieve sleep logs for a date
13
+ # @param date date for which sleep logs needs to be accessed
14
+ def sleep_logs(date)
15
+ get_call_1_2("user/#{user_id}/sleep/date/#{format_date(date)}.json")
16
+ end
17
+
18
+ def sleep_logs_by_date_range(start_date, end_date)
19
+ get_call_1_2("user/#{user_id}/sleep/date/#{format_date(start_date)}/#{format_date(end_date)}.json")
20
+ end
21
+
22
+ def sleep_logs_list(date, sort, limit)
23
+ date_param = format_date(date)
24
+ if sort == 'asc'
25
+ date_param = "afterDate=#{date_param}"
26
+ elsif sort == 'desc'
27
+ date_param = "beforeDate=#{date_param}"
28
+ else
29
+ raise FitgemOauth2::InvalidArgumentError, "sort can either be asc or desc"
30
+ end
31
+ get_call_1_2("user/#{user_id}/sleep/list.json?#{date_param}&offset=0&sort=#{sort}&limit=#{limit}")
32
+ end
33
+
34
+ # retrieve sleep goal for the user
35
+ def sleep_goal
36
+ get_call("user/#{user_id}/sleep/goal.json")
37
+ end
38
+
39
+ # update sleep goal
40
+ # @param params POST parameters for updating sleep goal
41
+ def update_sleep_goal(params)
42
+ post_call("user/#{user_id}/sleep/goal.json", params)
43
+ end
44
+
45
+ # retrieve time series data for sleep
46
+ # @param resource sleep resource to be requested
47
+ # @param start_date starting date for sleep time series
48
+ # @param end_date ending date for sleep time series
49
+ # @param period period for sleep time series
50
+ def sleep_time_series(resource: nil, start_date: nil, end_date: nil, period: nil)
51
+ unless start_date
52
+ raise FitgemOauth2::InvalidArgumentError, 'Start date not provided.'
53
+ end
54
+
55
+ unless resource && SLEEP_RESOURCES.include?(resource)
56
+ raise FitgemOauth2::InvalidArgumentError, "Invalid resource: #{resource}. Valid resources are #{SLEEP_RESOURCES}."
57
+ end
58
+
59
+ if period && end_date
60
+ raise FitgemOauth2::InvalidArgumentError, 'Both end_date and period specified. Specify only one.'
61
+ end
62
+
63
+ if period && !SLEEP_PERIODS.include?(period)
64
+ raise FitgemOauth2::InvalidArgumentError, "Invalid period: #{period}. Valid periods are #{SLEEP_PERIODS}."
65
+ end
66
+
67
+ second = period || format_date(end_date)
68
+
69
+ url = ['user', user_id, 'sleep', resource, 'date', format_date(start_date), second].join('/')
70
+
71
+ get_call(url + '.json')
72
+ end
73
+
74
+ # log sleep
75
+ # @param params POST params for creating sleep log
76
+ def log_sleep(params)
77
+ post_call_1_2("user/#{user_id}/sleep.json", params)
78
+ end
79
+
80
+ # deleted sleep log
81
+ # @param log_id ID of the sleep log that needs to be removed.
82
+ def delete_logged_sleep(log_id)
83
+ delete_call("user/#{user_id}/sleep/#{log_id}.json")
84
+ end
85
+ end
86
+ end
@@ -1,32 +1,32 @@
1
- module FitgemOauth2
2
- class Client
3
-
4
- SUBSCRIBABLE_TYPES = %i[sleep body activities foods all].freeze
5
-
6
- def subscriptions(opts)
7
- get_call(subscription_url(opts))
8
- end
9
-
10
- def create_subscription(opts)
11
- post_call(subscription_url(opts))
12
- end
13
-
14
- def remove_subscription(opts)
15
- delete_call(subscription_url(opts))
16
- end
17
-
18
- protected
19
-
20
- def subscription_url(opts)
21
- type = opts[:type] || :all
22
- subscription_id = opts[:subscription_id]
23
-
24
- url = ['user', user_id]
25
- url << type unless type == :all
26
- url << 'apiSubscriptions'
27
- url << subscription_id if subscription_id
28
-
29
- url.join('/') + '.json'
30
- end
31
- end
32
- end
1
+ module FitgemOauth2
2
+ class Client
3
+
4
+ SUBSCRIBABLE_TYPES = %i[sleep body activities foods all].freeze
5
+
6
+ def subscriptions(opts)
7
+ get_call(subscription_url(opts))
8
+ end
9
+
10
+ def create_subscription(opts)
11
+ post_call(subscription_url(opts))
12
+ end
13
+
14
+ def remove_subscription(opts)
15
+ delete_call(subscription_url(opts))
16
+ end
17
+
18
+ protected
19
+
20
+ def subscription_url(opts)
21
+ type = opts[:type] || :all
22
+ subscription_id = opts[:subscription_id]
23
+
24
+ url = ['user', user_id]
25
+ url << type unless type == :all
26
+ url << 'apiSubscriptions'
27
+ url << subscription_id if subscription_id
28
+
29
+ url.join('/') + '.json'
30
+ end
31
+ end
32
+ end