fitbyte 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2288b2aa276802af1ee13b8203f7f95bb58c871d
4
- data.tar.gz: 15e907b187d26a2faaeb8132506edc32830ca9ab
3
+ metadata.gz: d593e9552bee3c7dc1319f3f9ba196e7d4064b29
4
+ data.tar.gz: 87c7a205b3131164a185c2d7423ec8695f40fce5
5
5
  SHA512:
6
- metadata.gz: c5c642754e899b14be4b0ffc9e5013920e35d5903e47e5f10c5d5b063daf53c8f53e50f9d2353ec1c77c2f51fca25f74bce70c8f04b150d2802e706189012dd4
7
- data.tar.gz: 490c4ce5f77788c5f011d683f16dd8afdc36394186987233d185e2f3efd1332caf5bf4c95a772f178381edfe9bdf943ee101c57140b1cfc48baa788c868ea676
6
+ metadata.gz: a6b484d18dc864cbc1485e7b53f88f42008051f3f763fe41b60170305506564cd3c554ceed1d663d546fb7a8aabd19a063b2de9dab544e56fc2001d5095b4023
7
+ data.tar.gz: 992028f7008f2fac652494b120b6bf6aef90c5c96c50056df7b71535bc410b768e3e9c814b4d091b79b4262fe501ca9f0022c6036c2dba932eaccf4325d24730
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ 0.2.6
2
+ -----
3
+ - Expand API endpoint support for the following actions:
4
+ - Add activity to favorites
5
+ - Retrieve list of activity log entries
6
+ - Create/update daily/weekly goals
7
+ - Delete activity
8
+ - Remove activity from favorites
9
+
1
10
  0.2.5
2
11
  -----
3
12
  - Responses now return FitStruct objects (inherit from OpenStruct).
data/README.md CHANGED
@@ -59,6 +59,26 @@ client.food_logs Date.today, raw: true
59
59
  # => { :foods => [{ :isFavorite => true, :logDate => "2015-06-26", :logId => 1820, :loggedFood => { :accessLevel => "PUBLIC", :amount => 132.57, :brand => "", :calories => 752, ...}] }
60
60
  ```
61
61
 
62
+ ### Options
63
+
64
+ When initializing a `Fitbyte::Client` instance, you're given access to a handful of options:
65
+
66
+ - `:api_version` - API version to be used when making requests (default: "1")
67
+
68
+ ---
69
+ - `:unit_system` - The measurement unit system to use for response values (default: "en_US" | available: "en_US", "en_GB", and "any" for metric)
70
+
71
+ ---
72
+ - `:locale` - The locale to use for response values (default: "en_US" | available: "en_US", "fr_FR", "de_DE", "es_ES", "en_GB", "en_AU", "en_NZ" and "ja_JP")
73
+
74
+ ---
75
+ - `:scope` - A space-delimited list of the permissions you are requesting (default: "activity nutrition profile settings sleep social weight" | available: "activity", "heartrate", "location", "nutrition", "profile", "settings" "sleep", "social" and "weight")
76
+
77
+ ---
78
+ - `:raw_response` - Setting this option to `true` returns response values on subsequent calls as parsed JSON; by default, response values use FitStruct objects, for convenient method-like attribute access (default: false | available: true, false)
79
+
80
+ ---
81
+
62
82
  ## License
63
83
 
64
84
  This gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -1,31 +1,148 @@
1
1
  module Fitbyte
2
2
  class Client
3
+ # GET Activities
4
+ # ==============
5
+
6
+ # Retrieves a summary and list of a user's activities and activity log entries for a given day
7
+ # in the format requested using units in the unit system which corresponds to the Accept-Language header provided.
8
+
3
9
  def daily_activity_summary(date=Date.today, opts={})
4
10
  get("user/#{@user_id}/activities/date/#{format_date(date)}.json", opts)
5
11
  end
6
12
 
13
+ # Retrieves a list of a user's frequent activities in the format requested using units
14
+ # in the unit system which corresponds to the Accept-Language header provided.
15
+
7
16
  def frequent_activities(opts={})
8
17
  get("user/#{@user_id}/activities/frequent.json", opts)
9
18
  end
10
19
 
20
+ def recent_activities(opts={})
21
+ get("user/#{@user_id}/activities/recent.json", opts)
22
+ end
23
+
24
+ # Returns a list of a user's favorite activities.
25
+
11
26
  def favorite_activities(opts={})
12
27
  get("user/#{@user_id}/activities/favorite.json", opts)
13
28
  end
14
29
 
30
+ # Gets a tree of all valid Fitbit public activities from
31
+ # the activities catalog as well as private custom activities the user created.
32
+
15
33
  def all_activities(opts={})
16
34
  get("activities.json", opts)
17
35
  end
18
36
 
37
+ # Retrieves a list of a user's activity log entries before or after a given day with
38
+ # offset and limit using units in the unit system which corresponds to the Accept-Language header provided.
39
+
40
+ # ==== Parameters
41
+ # * +:beforeDate+ - the date; formatted in yyyy-MM-ddTHH:mm:ss
42
+ # * +:afterDate+ - the date; formatted in yyyy-MM-ddTHH:mm:ss
43
+ # * +:sort+ - the sort order of entries by date (asc or desc)
44
+ # * +:offset+ - the offset number of entries
45
+ # * +:limit+ - the max of the number of entries returned (max: 100)
46
+
47
+ def activity_logs_list(opts={})
48
+ get("user/#{@user_id}/activities/list.json", opts)
49
+ end
50
+
51
+ # Returns the details of a specific activity in the Fitbit activities database in the format requested.
52
+ # If activity has levels, also returns a list of activity level details.
53
+
54
+ def activity(activity_id)
55
+ get("activities/#{activity_id}.json")
56
+ end
57
+
58
+ # Retrieves the user's activity statistics in the format requested using units
59
+ # in the unit system which corresponds to the Accept-Language header provided.
60
+ # Activity statistics includes Lifetime and Best achievement values from the
61
+ # My Achievements tile on the website dashboard.
62
+
19
63
  def lifetime_stats(opts={})
20
64
  get("user/#{@user_id}/activities.json", opts)
21
65
  end
22
66
 
67
+ # Retrieves a user's current daily activity goals.
68
+
23
69
  def daily_goals(opts={})
24
70
  get("user/#{@user_id}/activities/goals/daily.json", opts)
25
71
  end
26
72
 
73
+ # Retrieves a user's current weekly activity goals.
74
+
27
75
  def weekly_goals(opts={})
28
76
  get("user/#{@user_id}/activities/goals/weekly.json", opts)
29
77
  end
78
+
79
+ # POST Activities
80
+ # ===============
81
+
82
+ # Creates log entry for an activity or user's private custom activity using units
83
+ # in the unit system which corresponds to the Accept-Language header provided.
84
+
85
+ # ==== POST Parameters
86
+ # * +:activityId+ - activity id
87
+ # * +:activityName+ - custom activity name. Either activity ID or activityName must be provided
88
+ # * +:manualCalories+ - calories burned, specified manually. Required with activityName, otherwise optional
89
+ # * +:startTime+ - activity start time; formatted in HH:mm:ss
90
+ # * +:durationMillis+ - duration in milliseconds
91
+ # * +:date+ - log entry date; formatted in yyyy-MM-dd
92
+ # * +:distance+ - distance; required for logging directory activity; formatted in X.XX
93
+ # * +:distanceUnit+ - distance measurement unit
94
+
95
+ def log_activity(opts)
96
+ post("user/#{@user_id}/activities.json", opts)
97
+ end
98
+
99
+ # Adds the activity with the given ID to user's list of favorite activities.
100
+
101
+ def add_favorite_activity(activity_id)
102
+ post("user/#{@user_id}/activities/favorite/#{activity_id}.json")
103
+ end
104
+
105
+ # Creates or updates a user's daily activity goals and returns a response using units
106
+ # in the unit system which corresponds to the Accept-Language header provided.
107
+
108
+ # ==== POST Parameters
109
+ # * +:caloriesOut+ - calories output goal value; integer
110
+ # * +:activeMinutes+ - active minutes goal value; integer
111
+ # * +:floors+ - floor goal value; integer
112
+ # * +:distance+ - distance goal value; X.XX or integer
113
+ # * +:steps+ - steps goal value; integer
114
+
115
+ def create_or_update_daily_goals(opts={})
116
+ post("user/#{@user_id}/activities/goals/daily.json", opts)
117
+ end
118
+
119
+ # Creates or updates a user's weekly activity goals and returns a response using units
120
+ # in the unit system which corresponds to the Accept-Language header provided.
121
+
122
+ # ==== POST Parameters
123
+ # * +:caloriesOut+ - calories output goal value; integer
124
+ # * +:activeMinutes+ - active minutes goal value; integer
125
+ # * +:floors+ - floor goal value; integer
126
+ # * +:distance+ - distance goal value; X.XX or integer
127
+ # * +:steps+ - steps goal value; integer
128
+
129
+ def create_or_update_weekly_goals(opts={})
130
+ post("user/#{@user_id}/activities/goals/weekly.json", opts)
131
+ end
132
+
133
+ # DELETE Activities
134
+ # =================
135
+
136
+ # Deletes a user's activity log entry with the given ID.
137
+
138
+ def delete_activity(activity_log_id)
139
+ delete("user/#{@user_id}/activities/#{activity_log_id}.json")
140
+ end
141
+
142
+ # Removes the activity with the given ID from a user's list of favorite activities.
143
+
144
+ def delete_favorite_activity(activity_id)
145
+ delete("user/#{@user_id}/activities/favorite/#{activity_id}.json")
146
+ end
30
147
  end
31
148
  end
@@ -71,8 +71,20 @@ module Fitbyte
71
71
 
72
72
  def get(path, opts={})
73
73
  raw = opts[:raw].nil? ? @raw_response : opts[:raw]
74
- MultiJson.load(token.get(("#{@api_version}/" + path), headers: request_headers).response.body,
75
- symbolize_keys: true, object_class: (FitStruct unless raw))
74
+ response = token.get(("#{@api_version}/" + path), headers: request_headers).response
75
+ MultiJson.load(response.body, symbolize_keys: true, object_class: (FitStruct unless raw)) unless response.status == 204
76
+ end
77
+
78
+ def post(path, opts={})
79
+ raw = opts[:raw].nil? ? @raw_response : opts[:raw]
80
+ response = token.post(("#{@api_version}/" + path), body: opts, headers: request_headers).response
81
+ MultiJson.load(response.body, symbolize_keys: true, object_class: (FitStruct unless raw)) unless response.status == 204
82
+ end
83
+
84
+ def delete(path, opts={})
85
+ raw = opts[:raw].nil? ? @raw_response : opts[:raw]
86
+ response = token.delete(("#{@api_version}/" + path), headers: request_headers).response
87
+ MultiJson.load(response.body, symbolize_keys: true, object_class: (FitStruct unless raw)) unless response.status == 204
76
88
  end
77
89
 
78
90
  def defaults
@@ -1,4 +1,4 @@
1
1
  module Fitbyte
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  REPO_URL = "https://github.com/zokioki/fitbyte"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fitbyte
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zoran Pesic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-18 00:00:00.000000000 Z
11
+ date: 2015-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth2