fitgem 0.3.0 → 0.3.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.
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm ruby-1.9.2-p0@fitbit
1
+ rvm 1.9.2@fitbit --create
@@ -2,11 +2,9 @@
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
3
  $:.push File.join(File.dirname(__FILE__), '.', 'lib')
4
4
 
5
- require 'fitgem'
6
-
7
5
  Gem::Specification.new do |s|
8
6
  s.name = "fitgem"
9
- s.version = Fitgem::VERSION
7
+ s.version = "0.3.1"
10
8
  s.platform = Gem::Platform::RUBY
11
9
  s.authors = ["Zachery Moneypenny"]
12
10
  s.email = ["fitgem@whazzmaster.com"]
@@ -4,5 +4,5 @@ require 'oauth'
4
4
  require 'fitgem/client'
5
5
 
6
6
  module Fitgem
7
- VERSION = "0.3.0"
7
+ VERSION = "0.3.1"
8
8
  end
@@ -1,25 +1,25 @@
1
1
  module Fitgem
2
2
  class Client
3
-
3
+
4
4
  # ==========================================
5
5
  # Activity Retrieval Methods
6
6
  # ==========================================
7
7
  def activities_on_date(date)
8
8
  get("/user/#{@user_id}/activities/date/#{format_date(date)}.json")
9
9
  end
10
-
10
+
11
11
  def frequent_activities()
12
12
  get("/user/#{@user_id}/activities/frequent.json")
13
13
  end
14
-
14
+
15
15
  def recent_activities()
16
16
  get("/user/#{@user_id}/activities/recent.json")
17
17
  end
18
-
18
+
19
19
  def favorite_activities()
20
20
  get("/user/#{@user_id}/activities/favorite.json")
21
21
  end
22
-
22
+
23
23
  def activity(id, options ={})
24
24
  get("/activities/#{id}.json")
25
25
  end
@@ -27,33 +27,38 @@ module Fitgem
27
27
  # ==========================================
28
28
  # Activity Update Methods
29
29
  # ==========================================
30
-
30
+
31
31
  # The following values are REQUIRED when logging an activity:
32
- # options[:activityId] => The activity id
33
- # options[:durationMillis] => Activity duration in milliseconds
34
- # options[:distance] => Distance covered during activity date
32
+ # options[:activityId] => The id of the activity, directory activity or intensity level activity. See activity types at http://wiki.fitbit.com/display/API/API-Log-Activity for more information.
33
+ # options[:durationMillis] => Activity duration in milliseconds
35
34
  # options[:startTime] => Activity start time hours and minutes in the format HH:mm
35
+ # options[:date] => Set to today's date when not provided
36
+ #
37
+ # The following value is REQUIRED when logging directory activity, OPTIONAL otherwise
38
+ # options[:distance]
39
+ #
36
40
  # The following values are OPTIONAL when logging an activity:
37
- # options[:date] => set to today's date when not provided
41
+ # options[:distanceUnit] => One of Fitgem::ApiDistanceUnit values
42
+ # options[:manualCalories] => Number of calories determined manually
38
43
  def log_activity(options)
39
44
  post("/user/#{@user_id}/activities.json", options)
40
45
  end
41
-
46
+
42
47
  def add_favorite_activity(activity_id)
43
48
  post("/user/#{@user_id}/activities/log/favorite/#{activity_id}.json")
44
49
  end
45
-
50
+
46
51
  # ==========================================
47
52
  # Activity Removal Methods
48
- # ==========================================
53
+ # ==========================================
49
54
 
50
55
  def delete_logged_activity(activity_log_id)
51
56
  delete("/user/#{@user_id}/activities/#{activity_log_id}.json")
52
57
  end
53
-
58
+
54
59
  def remove_favorite_activity(activity_id)
55
60
  delete("/user/#{@user_id}/activities/log/favorite/#{activity_id}.json")
56
-
61
+
57
62
  end
58
63
  end
59
64
  end
@@ -73,21 +73,22 @@ module Fitgem
73
73
 
74
74
  def get(path, headers={})
75
75
  headers.merge!("User-Agent" => "fitgem gem v#{Fitgem::VERSION}", "Accept-Language" => @api_unit_system)
76
- oauth_response = access_token.get("/#{@api_version}#{path}", headers)
76
+ uri = "/#{@api_version}#{path}"
77
+ oauth_response = access_token.get(uri, headers)
77
78
  JSON.parse(oauth_response.body)
78
79
  end
79
80
 
80
81
  def post(path, body='', headers={})
81
82
  headers.merge!("User-Agent" => "fitgem gem v#{Fitgem::VERSION}", "Accept-Language" => @api_unit_system)
82
- oauth_response = access_token.post("/#{@api_version}#{path}", body, headers)
83
+ uri = "/#{@api_version}#{path}"
84
+ oauth_response = access_token.post(uri, body, headers)
83
85
  JSON.parse(oauth_response.body)
84
86
  end
85
87
 
86
88
  def delete(path, headers={})
87
- p path
88
- p headers
89
89
  headers.merge!("User-Agent" => "fitgem gem v#{Fitgem::VERSION}", "Accept-Language" => @api_unit_system)
90
- oauth_response = access_token.delete("/#{@api_version}#{path}", headers)
90
+ uri = "/#{@api_version}#{path}"
91
+ oauth_response = access_token.delete(uri, headers)
91
92
  JSON.parse(oauth_response.body)
92
93
  end
93
94
  end
@@ -4,42 +4,42 @@ module Fitgem
4
4
  # ==========================================
5
5
  # Food Retrieval Methods
6
6
  # ==========================================
7
-
7
+
8
8
  def foods_on_date(date)
9
9
  get("/user/#{@user_id}/foods/log/date/#{format_date(date)}.json")
10
10
  end
11
-
11
+
12
12
  def recent_foods()
13
13
  get("/user/#{@user_id}/foods/log/recent.json")
14
14
  end
15
-
15
+
16
16
  def frequent_foods()
17
17
  get("/user/#{@user_id}/foods/log/frequent.json")
18
18
  end
19
-
19
+
20
20
  def favorite_foods()
21
21
  get("/user/#{@user_id}/foods/log/favorite.json")
22
22
  end
23
-
23
+
24
24
  def foods_units()
25
25
  get("/foods/units.json")
26
26
  end
27
-
27
+
28
28
  def find_food(query_string)
29
29
  get("/foods/search.json?query=#{URI.escape(query_string)}")
30
30
  end
31
-
31
+
32
32
  # ==========================================
33
33
  # Food Update Methods
34
34
  # ==========================================
35
-
35
+
36
36
  # Send the following required ID's in the options hash:
37
37
  # options[:foodId] => ID of the food to log
38
38
  # options[:mealTypeId] => ID of the meal to log the food for
39
39
  # options[:unitId] => ID of the unit to log with the food
40
40
  # (typically retrieved via a previous call to get Foods (all, recent, frequent, favorite) or Food Units. )
41
41
  # options[:amount] => Amount consumed of the selected unit; a floating point number
42
- # options[:date] => Log date in the format yyyy-MM-dd
42
+ # options[:date] => Log date in the format yyyy-MM-dd
43
43
  def log_food(options)
44
44
  post("/user/#{@user_id}/foods/log.json", options)
45
45
  end
@@ -47,17 +47,32 @@ module Fitgem
47
47
  def add_favorite_food(food_id)
48
48
  post("/user/#{@user_id}/foods/log/favorite/#{food_id}.json")
49
49
  end
50
-
50
+
51
51
  # ==========================================
52
52
  # Food Removal Methods
53
- # ==========================================
54
-
53
+ # ==========================================
54
+
55
55
  def delete_logged_food(food_log_id)
56
56
  delete("/user/#{@user_id}/foods/log/#{food_log_id}.json")
57
57
  end
58
-
58
+
59
59
  def remove_favorite_food(food_id)
60
60
  delete("/user/#{@user_id}/foods/favorite/#{food_id}.json")
61
61
  end
62
+
63
+ # ==========================================
64
+ # Food Creation Methods
65
+ # ==========================================
66
+
67
+ # Create a food defined by the following items in the options hash:
68
+ # options[:name] (required) => Food name
69
+ # options[:defaultFoodMeasurementUnitId] (required) => Unit id; default measurement unit; full list of units could be retrieved via a previous calls to Get Food Units
70
+ # options[:defaultServingSize] (required) => Size of the default serving; nutritional values should be provided for this serving size
71
+ # options[:calories] (required) => Calories in the default serving size
72
+ # options[:formType] (optional) => Form type; (LIQUID or DRY)
73
+ # options[:description] (optional) => Description
74
+ def create_food(options)
75
+ post("/foods.json", options)
76
+ end
62
77
  end
63
78
  end
@@ -3,13 +3,51 @@ module Fitgem
3
3
  def self.US
4
4
  "en_US"
5
5
  end
6
-
6
+
7
7
  def self.UK
8
8
  "en_UK"
9
9
  end
10
-
10
+
11
11
  def self.METRIC
12
12
  ""
13
13
  end
14
14
  end
15
+
16
+ class ApiDistanceUnit
17
+ def self.centimeters
18
+ "Centimeter"
19
+ end
20
+
21
+ def self.feet
22
+ "Foot"
23
+ end
24
+
25
+ def self.inches
26
+ "Inch"
27
+ end
28
+
29
+ def self.kilometers
30
+ "Kilometer"
31
+ end
32
+
33
+ def self.meters
34
+ "Meter"
35
+ end
36
+
37
+ def self.miles
38
+ "Mile"
39
+ end
40
+
41
+ def self.millimeters
42
+ "Millimeter"
43
+ end
44
+
45
+ def self.steps
46
+ "Steps"
47
+ end
48
+
49
+ def self.yards
50
+ "Yards"
51
+ end
52
+ end
15
53
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: fitgem
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.0
5
+ version: 0.3.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Zachery Moneypenny
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-12 00:00:00 -05:00
13
+ date: 2011-08-01 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  requirements: []
139
139
 
140
140
  rubyforge_project: fitgem
141
- rubygems_version: 1.5.2
141
+ rubygems_version: 1.6.2
142
142
  signing_key:
143
143
  specification_version: 3
144
144
  summary: OAuth client library to the data on fitbit.com