fitbit_api 0.12.0 → 0.12.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/fitbit_api/activities.rb +22 -27
- data/lib/fitbit_api/alarms.rb +14 -21
- data/lib/fitbit_api/devices.rb +2 -0
- data/lib/fitbit_api/friends.rb +4 -0
- data/lib/fitbit_api/goals.rb +14 -16
- data/lib/fitbit_api/helpers/utils.rb +0 -2
- data/lib/fitbit_api/sleep.rb +7 -5
- data/lib/fitbit_api/user.rb +8 -0
- data/lib/fitbit_api/version.rb +1 -1
- data/lib/fitbit_api/water.rb +4 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cced5004604fd14351b0539ffe29efc102d6297f0a73e6d64edd6e4f18b24975
|
4
|
+
data.tar.gz: 66a12b7d4b92c0c75e0958b5f69ddbb87f376bc4196bebd8884804df09bf33d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d3b0ee2261afc4a254dc3673796198e9dc832e78a21241b84a7c11a0f39d396fc8647abf6826a0c4aa3a3be731a63b812dcf4d0de9a45c3fb6ccae9b9297612
|
7
|
+
data.tar.gz: 67526aba18a4fe518d5d0b05e8a48979009fc3435ed627c59bff341872e6917387c14ae83709d2ae84c0ff5e16000bf2fca55a89870a436f41b5a389b6b33a2a
|
data/CHANGELOG.md
CHANGED
@@ -11,12 +11,7 @@ module FitbitAPI
|
|
11
11
|
|
12
12
|
ACTIVITY_INTRADAY_RESOURCES = %w(calories steps distance floors elevation)
|
13
13
|
|
14
|
-
#
|
15
|
-
# ==============
|
16
|
-
|
17
|
-
# Retrieves a summary and list of a user's activities and activity log entries
|
18
|
-
# for a given day in the format requested using units in the unit system which
|
19
|
-
# corresponds to the Accept-Language header provided.
|
14
|
+
# Retrieves a summary and list of a user's activities and activity log entries for a given day.
|
20
15
|
#
|
21
16
|
# @param date [Date] The date for which to retrieve the activity data.
|
22
17
|
|
@@ -24,13 +19,15 @@ module FitbitAPI
|
|
24
19
|
get("user/#{user_id}/activities/date/#{format_date(date)}.json")
|
25
20
|
end
|
26
21
|
|
27
|
-
# Retrieves a list of a user's frequent activities
|
28
|
-
# units in the unit system which corresponds to the Accept-Language header provided.
|
22
|
+
# Retrieves a list of a user's frequent activities.
|
29
23
|
|
30
24
|
def frequent_activities
|
31
25
|
get("user/#{user_id}/activities/frequent.json")
|
32
26
|
end
|
33
27
|
|
28
|
+
# Retrieves a list of a user's recent activities types logged with some details
|
29
|
+
# of the last activity log of that type.
|
30
|
+
|
34
31
|
def recent_activities
|
35
32
|
get("user/#{user_id}/activities/recent.json")
|
36
33
|
end
|
@@ -54,11 +51,13 @@ module FitbitAPI
|
|
54
51
|
#
|
55
52
|
# activity_logs_list(before_date: Date.parse('2021-05-24'), limit: 5)
|
56
53
|
#
|
57
|
-
# @param
|
58
|
-
#
|
59
|
-
# @
|
60
|
-
# @
|
61
|
-
# @
|
54
|
+
# @param params [Hash] The request parameters
|
55
|
+
#
|
56
|
+
# @option params :before_date [Date] Specify when filtering entries that occured before the given date
|
57
|
+
# @option params :after_date [Date] Specify when filtering entries that occured after the given date
|
58
|
+
# @option params :sort [String] The Sort order of entries by date (asc or desc)
|
59
|
+
# @option params :offset [Integer] The offset number of entries. Must always be 0
|
60
|
+
# @option params :limit [Integer] The max of the number of entries returned (max: 20)
|
62
61
|
|
63
62
|
def activity_logs_list(params={})
|
64
63
|
default_params = { before_date: Date.today, after_date: nil, sort: 'desc', limit: 20, offset: 0 }
|
@@ -139,22 +138,21 @@ module FitbitAPI
|
|
139
138
|
end
|
140
139
|
end
|
141
140
|
|
142
|
-
# POST Activities
|
143
|
-
# ===============
|
144
|
-
|
145
141
|
# Creates log entry for an activity or user's private custom activity using units
|
146
142
|
# in the unit system which corresponds to the Accept-Language header provided.
|
147
143
|
#
|
148
144
|
# log_activity(activity_id: 90013, manual_calories: 300, duration_millis: 6000000)
|
149
145
|
#
|
150
|
-
# @param
|
151
|
-
#
|
152
|
-
# @
|
153
|
-
# @
|
154
|
-
# @
|
155
|
-
# @
|
156
|
-
# @
|
157
|
-
# @
|
146
|
+
# @param body [Hash] The POST request body
|
147
|
+
#
|
148
|
+
# @option body :activity_id [Integer, String] The activity ID
|
149
|
+
# @option body :activity_name [String] Custom activity name. Either activity ID or activity_name must be provided
|
150
|
+
# @option body :manual_calories [Integer] Calories burned, specified manually. Required with activity_name, otherwise optional
|
151
|
+
# @option body :start_time [String] Activity start time; formatted in HH:mm:ss
|
152
|
+
# @option body :duration_millis [Integer] Duration in milliseconds
|
153
|
+
# @option body :date [String] Log entry date; formatted in yyyy-MM-dd
|
154
|
+
# @option body :distance [Integer] Distance; required for logging directory activity
|
155
|
+
# @option body :distance_unit [String] Distance measurement unit
|
158
156
|
|
159
157
|
def log_activity(body)
|
160
158
|
post("user/#{user_id}/activities.json", body)
|
@@ -168,9 +166,6 @@ module FitbitAPI
|
|
168
166
|
post("user/#{user_id}/activities/favorite/#{activity_id}.json")
|
169
167
|
end
|
170
168
|
|
171
|
-
# DELETE Activities
|
172
|
-
# =================
|
173
|
-
|
174
169
|
# Deletes a user's activity log entry with the given ID.
|
175
170
|
#
|
176
171
|
# @param activity_log_id [Integer] The ID of the activity log entry
|
data/lib/fitbit_api/alarms.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
module FitbitAPI
|
2
2
|
class Client
|
3
|
-
# GET Alarms
|
4
|
-
# ==========
|
5
|
-
|
6
3
|
# Returns a list of the set alarms connected to a user's account.
|
7
4
|
#
|
8
5
|
# @params tracker_id [Integer] The ID of the tracker for which the data is returned
|
@@ -11,19 +8,17 @@ module FitbitAPI
|
|
11
8
|
get("user/#{user_id}/devices/tracker/#{tracker_id}/alarms.json")
|
12
9
|
end
|
13
10
|
|
14
|
-
# POST Alarms
|
15
|
-
# ===========
|
16
|
-
|
17
11
|
# Adds the alarm settings to a given ID for a given device.
|
18
12
|
#
|
19
13
|
# add_alarm(123, time: "07:15-08:00", recurring: true, week_days: "MONDAY,FRIDAY,SATURDAY")
|
20
14
|
#
|
21
15
|
# @param tracker_id [Integer] The ID of the tracker for which the alarm is created
|
16
|
+
# @param body [Hash] The POST request body
|
22
17
|
#
|
23
|
-
# @
|
24
|
-
# @
|
25
|
-
# @
|
26
|
-
# @
|
18
|
+
# @option body :time [String] Time of day that the alarm vibrates with a UTC timezone offset, e.g. 07:15-08:00
|
19
|
+
# @option body :enabled [Boolean] If false, alarm does not vibrate until enabled is set to true
|
20
|
+
# @option body :recurring [Boolean] If false, the alarm is a single event
|
21
|
+
# @option body :week_days [String] Comma separated list of days of the week on which the alarm vibrates (MONDAY,TUESDAY)
|
27
22
|
|
28
23
|
def add_alarm(tracker_id, body={})
|
29
24
|
post("user/#{user_id}/devices/tracker/#{tracker_id}/alarms.json", body)
|
@@ -35,23 +30,21 @@ module FitbitAPI
|
|
35
30
|
#
|
36
31
|
# @param tracker_id [Integer] The ID of the tracker for which the alarm is created
|
37
32
|
# @param alarm_id [Integer] The ID of the alarm to be updated
|
33
|
+
# @param body [Hash] The POST request body.
|
38
34
|
#
|
39
|
-
# @
|
40
|
-
# @
|
41
|
-
# @
|
42
|
-
# @
|
43
|
-
# @
|
44
|
-
# @
|
45
|
-
# @
|
46
|
-
# @
|
35
|
+
# @option body :time [String] Time of day that the alarm vibrates with a UTC timezone offset, e.g. 07:15-08:00
|
36
|
+
# @option body :enabled [Boolean] If false, alarm does not vibrate until enabled is set to true
|
37
|
+
# @option body :recurring [Boolean] If false, the alarm is a single event
|
38
|
+
# @option body :week_days [String] Comma separated list of days of the week on which the alarm vibrates (MONDAY,TUESDAY)
|
39
|
+
# @option body :snooze_length [Integer] Minutes between alarms
|
40
|
+
# @option body :snooze_count [Integer] Maximum snooze count
|
41
|
+
# @option body :label [String] Label for alarm
|
42
|
+
# @option body :vibe [String] Vibe pattern; only one value for now (DEFAULT)
|
47
43
|
|
48
44
|
def update_alarm(tracker_id, alarm_id, body={})
|
49
45
|
post("user/#{user_id}/devices/tracker/#{tracker_id}/alarms/#{alarm_id}.json", body)
|
50
46
|
end
|
51
47
|
|
52
|
-
# DELETE Alarms
|
53
|
-
# =============
|
54
|
-
|
55
48
|
# Deletes the user's device alarm entry with the given ID for a given device.
|
56
49
|
#
|
57
50
|
# delete_alarm(123, 987)
|
data/lib/fitbit_api/devices.rb
CHANGED
data/lib/fitbit_api/friends.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
module FitbitAPI
|
2
2
|
class Client
|
3
|
+
# Retrieves a list of the Fitbit user's friends.
|
4
|
+
|
3
5
|
def friends
|
4
6
|
get("user/#{user_id}/friends.json")
|
5
7
|
end
|
6
8
|
|
9
|
+
# Retrieves the user's friends leaderboard.
|
10
|
+
|
7
11
|
def friends_leaderboard
|
8
12
|
get("user/#{user_id}/friends/leaderboard.json")
|
9
13
|
end
|
data/lib/fitbit_api/goals.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
module FitbitAPI
|
2
2
|
class Client
|
3
|
-
# GET Goals
|
4
|
-
# =========
|
5
|
-
|
6
3
|
# Retrieves a user's current weight goal.
|
7
4
|
|
8
5
|
def weight_goal
|
@@ -45,19 +42,18 @@ module FitbitAPI
|
|
45
42
|
get("user/#{user_id}/foods/log/water/goal.json")
|
46
43
|
end
|
47
44
|
|
48
|
-
# POST Goals
|
49
|
-
# ==========
|
50
|
-
|
51
45
|
# Creates or updates a user's daily activity goals and returns a response using units
|
52
46
|
# in the unit system which corresponds to the Accept-Language header provided.
|
53
47
|
#
|
54
48
|
# update_daily_activity_goals(calories_out: 2000, active_minutes: 90, floors: 5)
|
55
49
|
#
|
56
|
-
# @param
|
57
|
-
#
|
58
|
-
# @
|
59
|
-
# @
|
60
|
-
# @
|
50
|
+
# @param body [Hash] The POST request body
|
51
|
+
#
|
52
|
+
# @option body :calories_out [Integer] Calories output goal value
|
53
|
+
# @option body :active_minutes [Integer] Active minutes goal value
|
54
|
+
# @option body :floors [Integer] Floor goal value
|
55
|
+
# @option body :distance [Integer, Float] Distance goal value
|
56
|
+
# @option body :steps [Integer] Steps goal value
|
61
57
|
|
62
58
|
def update_daily_activity_goals(body={})
|
63
59
|
post("user/#{user_id}/activities/goals/daily.json", body)
|
@@ -68,11 +64,13 @@ module FitbitAPI
|
|
68
64
|
#
|
69
65
|
# update_weekly_activity_goals(active_minutes: 300, floors: 20)
|
70
66
|
#
|
71
|
-
# @param
|
72
|
-
#
|
73
|
-
# @
|
74
|
-
# @
|
75
|
-
# @
|
67
|
+
# @param body [Hash] The POST request body
|
68
|
+
#
|
69
|
+
# @option body :calories_out [Integer] Calories output goal value
|
70
|
+
# @option body :active_minutes [Integer] Active minutes goal value
|
71
|
+
# @option body :floors [Integer] Floor goal value
|
72
|
+
# @option body :distance [Integer, Float] Distance goal value
|
73
|
+
# @option body :steps [Integer] Steps goal value
|
76
74
|
|
77
75
|
def update_weekly_activity_goals(body={})
|
78
76
|
post("user/#{user_id}/activities/goals/weekly.json", body)
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module FitbitAPI
|
2
2
|
class Client
|
3
|
-
|
4
3
|
PERIODS = %w(1d 7d 30d 1w 1m 3m 6m 1y max).freeze
|
5
4
|
|
6
5
|
def format_date(date)
|
@@ -79,6 +78,5 @@ module FitbitAPI
|
|
79
78
|
string.gsub!(/^\w{1}/) { |word| word.downcase } if opts[:lower]
|
80
79
|
return string
|
81
80
|
end
|
82
|
-
|
83
81
|
end
|
84
82
|
end
|
data/lib/fitbit_api/sleep.rb
CHANGED
@@ -20,11 +20,13 @@ module FitbitAPI
|
|
20
20
|
#
|
21
21
|
# sleep_logs_list(before_date: Date.parse('2021-05-24'), limit: 5)
|
22
22
|
#
|
23
|
-
# @param
|
24
|
-
#
|
25
|
-
# @
|
26
|
-
# @
|
27
|
-
# @
|
23
|
+
# @param params [Hash] The request parameters
|
24
|
+
#
|
25
|
+
# @option params :before_date [Date] Specify when filtering entries that occured before the given date
|
26
|
+
# @option params :after_date [Date] Specify when filtering entries that occured after the given date
|
27
|
+
# @option params :sort [String] the Sort order of entries by date (asc or desc)
|
28
|
+
# @option params :offset [Integer] The offset number of entries. Must always be 0
|
29
|
+
# @option params :limit [Integer] The max of the number of entries returned (max: 100)
|
28
30
|
|
29
31
|
def sleep_logs_list(params={})
|
30
32
|
default_params = { before_date: Date.today, after_date: nil, sort: 'desc', limit: 20, offset: 0 }
|
data/lib/fitbit_api/user.rb
CHANGED
@@ -1,13 +1,21 @@
|
|
1
1
|
module FitbitAPI
|
2
2
|
class Client
|
3
|
+
# Retrieves the user's profile data.
|
4
|
+
|
3
5
|
def profile
|
4
6
|
get("user/#{user_id}/profile.json")
|
5
7
|
end
|
6
8
|
|
9
|
+
# Retrieves a list of the user's badges.
|
10
|
+
|
7
11
|
def badges
|
8
12
|
get("user/#{user_id}/badges.json")
|
9
13
|
end
|
10
14
|
|
15
|
+
# Modifies a user's profile data.
|
16
|
+
#
|
17
|
+
# @params body [Hash] The POST request body
|
18
|
+
|
11
19
|
def update_profile(body)
|
12
20
|
post("user/#{user_id}/profile.json", body)
|
13
21
|
end
|
data/lib/fitbit_api/version.rb
CHANGED
data/lib/fitbit_api/water.rb
CHANGED
@@ -3,6 +3,7 @@ module FitbitAPI
|
|
3
3
|
# Retrieves a summary and list of a user's water log entries for a given day
|
4
4
|
#
|
5
5
|
# @param date [Date] The date for which entries are to be returned
|
6
|
+
|
6
7
|
def water_logs(date=Date.today)
|
7
8
|
get("user/#{user_id}/foods/log/water/date/#{format_date(date)}.json")
|
8
9
|
end
|
@@ -10,6 +11,7 @@ module FitbitAPI
|
|
10
11
|
# Create a user's water log entry
|
11
12
|
#
|
12
13
|
# @param body [Hash] The POST request body for creating the water log entry
|
14
|
+
|
13
15
|
def log_water(body)
|
14
16
|
post("user/#{user_id}/foods/log/water.json", body)
|
15
17
|
end
|
@@ -18,6 +20,7 @@ module FitbitAPI
|
|
18
20
|
#
|
19
21
|
# @params water_log_id [Integer] The ID of the water log to be updated
|
20
22
|
# @params body [Hash] The POST request body for updating the water log
|
23
|
+
|
21
24
|
def update_water_log(water_log_id, body)
|
22
25
|
post("user/#{user_id}/foods/log/water/#{water_log_id}.json", body)
|
23
26
|
end
|
@@ -25,6 +28,7 @@ module FitbitAPI
|
|
25
28
|
# Deleted a user's water log entry using the given log ID
|
26
29
|
#
|
27
30
|
# @param water_log_id [Integer] The id of the water log entry
|
31
|
+
|
28
32
|
def delete_water_log(water_log_id)
|
29
33
|
delete("user/#{user_id}/foods/log/water/#{water_log_id}.json")
|
30
34
|
end
|