fitgem 0.2.1 → 0.2.2

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/Guardfile ADDED
@@ -0,0 +1,15 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :version => 2 do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+
9
+ # Rails example
10
+ watch(%r{^spec/.+_spec\.rb$})
11
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
12
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
13
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
14
+ watch('spec/spec_helper.rb') { "spec" }
15
+ end
data/fitgem.gemspec CHANGED
@@ -17,6 +17,10 @@ Gem::Specification.new do |s|
17
17
  s.rubyforge_project = "fitgem"
18
18
  s.add_dependency "oauth"
19
19
  s.add_development_dependency "rspec"
20
+ s.add_development_dependency "guard"
21
+ s.add_development_dependency "guard-rspec"
22
+ s.add_development_dependency "rb-fsevent"
23
+ s.add_development_dependency "growl"
20
24
 
21
25
  s.files = `git ls-files`.split("\n")
22
26
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -0,0 +1,20 @@
1
+ module Fitgem
2
+ class Client
3
+
4
+ # ==========================================
5
+ # Body Measurements Update Methods
6
+ # ==========================================
7
+ def body_measurements_on_date(date)
8
+ get("/user/#{@user_id}/body/date/#{format_date(date)}.json")
9
+ end
10
+
11
+ # ==========================================
12
+ # Body Measurements Update Methods
13
+ # ==========================================
14
+
15
+ def log_weight(weight, date, options={})
16
+ post("/user/#{@user_id}/body/weight.json", options.merge(:weight => weight, :date => format_date(date)))
17
+ end
18
+
19
+ end
20
+ end
data/lib/fitgem/client.rb CHANGED
@@ -4,7 +4,7 @@ require 'fitgem/users'
4
4
  require 'fitgem/activities'
5
5
  require 'fitgem/units'
6
6
  require 'fitgem/foods'
7
- require 'fitgem/weight'
7
+ require 'fitgem/body_measurements'
8
8
  require 'fitgem/time_range'
9
9
  require 'fitgem/devices'
10
10
  require 'fitgem/notifications'
@@ -13,11 +13,11 @@ require 'uri'
13
13
 
14
14
  module Fitgem
15
15
  class Client
16
-
16
+
17
17
  attr_accessor :api_version
18
18
  attr_accessor :api_unit_system
19
19
  attr_accessor :user_id
20
-
20
+
21
21
  def initialize(options = {})
22
22
  @consumer_key = options[:consumer_key]
23
23
  @consumer_secret = options[:consumer_secret]
@@ -38,7 +38,7 @@ module Fitgem
38
38
  @secret = @access_token.secret
39
39
  @access_token
40
40
  end
41
-
41
+
42
42
  def reconnect(token, secret)
43
43
  @token = token
44
44
  @secret = secret
@@ -63,7 +63,7 @@ module Fitgem
63
63
  { :site => 'http://api.fitbit.com', :request_endpoint => @proxy }
64
64
  )
65
65
  end
66
-
66
+
67
67
  def access_token
68
68
  @access_token ||= OAuth::AccessToken.new(consumer, @token, @secret)
69
69
  end
@@ -1,16 +1,23 @@
1
1
  module Fitgem
2
2
  class Client
3
-
3
+
4
4
  # Should return date as YYYY-MM-DD
5
5
  def format_date(date)
6
6
  if date.is_a? String
7
- return date
7
+ case date
8
+ when 'today'
9
+ return Date.today.strftime("%Y-%m-%d")
10
+ when 'yesterday'
11
+ return (Date.today-1).strftime("%Y-%m-%d")
12
+ else
13
+ return date
14
+ end
8
15
  elsif Date === date || Time === date || DateTime === date
9
16
  return date.strftime("%Y-%m-%d")
10
17
  else
11
- raise Fitgem::InvalidArgumentError, "Date used must be a date/time object or a string in the format YYYY=MM-DD; current argument is a #{date.class}"
18
+ raise Fitgem::InvalidArgumentError, "Date used must be a date/time object or a string in the format YYYY-MM-DD; current argument is a #{date.class}"
12
19
  end
13
20
  end
14
-
21
+
15
22
  end
16
23
  end
data/lib/fitgem.rb CHANGED
@@ -4,5 +4,5 @@ require 'oauth'
4
4
  require 'fitgem/client'
5
5
 
6
6
  module Fitgem
7
- VERSION = "0.2.1"
7
+ VERSION = "0.2.2"
8
8
  end
data/spec/fitgem_spec.rb CHANGED
@@ -1,73 +1,83 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Fitgem do
4
-
4
+
5
5
  before do
6
6
  @client = Fitgem::Client.new
7
7
  end
8
-
8
+
9
9
  describe "global settings" do
10
10
  it 'should expose the api_version' do
11
11
  @client.api_version.should == "1"
12
12
  end
13
-
13
+
14
14
  it 'should all clients to set a new api version' do
15
15
  @client.api_version = "2"
16
16
  @client.api_version.should == "2"
17
17
  end
18
-
18
+
19
19
  it 'should default to the US unit system' do
20
20
  @client.api_unit_system.should == Fitgem::ApiUnitSystem.US
21
21
  end
22
-
22
+
23
23
  it 'should allow the unit system to be set to other types' do
24
24
  @client.api_unit_system = Fitgem::ApiUnitSystem.UK
25
25
  @client.api_unit_system.should == Fitgem::ApiUnitSystem.UK
26
26
  @client.api_unit_system = Fitgem::ApiUnitSystem.METRIC
27
- @client.api_unit_system.should == Fitgem::ApiUnitSystem.METRIC
27
+ @client.api_unit_system.should == Fitgem::ApiUnitSystem.METRIC
28
28
  end
29
-
29
+
30
30
  it 'should default to a user id of \'-\', the currently-logged in user' do
31
31
  @client.user_id.should == '-'
32
32
  end
33
33
  end
34
-
34
+
35
35
  describe "data retrieval by time range" do
36
-
36
+
37
37
  it 'should format the correct URI fragment based on a base date and end date' do
38
38
  frag = @client.construct_date_range_fragment({:base_date => '2011-03-07', :end_date => '2011-03-14'})
39
39
  frag.should == 'date/2011-03-07/2011-03-14'
40
40
  end
41
-
41
+
42
42
  it 'should format the correct URI fragment based on a base date and period' do
43
43
  frag = @client.construct_date_range_fragment({:base_date => '2011-03-07', :period => '7d'})
44
44
  frag.should == 'date/2011-03-07/7d'
45
45
  end
46
-
46
+
47
47
  it 'should raise an error unless there is a base date AND either a period or an end date' do
48
48
  lambda {
49
49
  @client.construct_date_range_fragment({:base_date => '2011-03-07'})
50
50
  }.should raise_error(Fitgem::InvalidTimeRange)
51
-
51
+
52
52
  lambda {
53
53
  @client.construct_date_range_fragment({:period => '1y'})
54
54
  }.should raise_error(Fitgem::InvalidTimeRange)
55
-
55
+
56
56
  lambda {
57
57
  @client.construct_date_range_fragment({:end_date => '2011-03-07', :period => '7d'})
58
58
  }.should raise_error(Fitgem::InvalidTimeRange)
59
59
  end
60
-
60
+
61
61
  end
62
-
62
+
63
63
  describe "format_date" do
64
- it 'should accept DateTime objects' do
64
+ it "accepts DateTime objects" do
65
65
  date = DateTime.strptime('2011-03-19','%Y-%m-%d')
66
66
  @client.format_date(date).should == '2011-03-19'
67
67
  end
68
-
69
- it 'should accept strings in YYYY-MM-DD format' do
68
+
69
+ it "accepts strings in YYYY-MM-DD format" do
70
70
  @client.format_date('2011-03-19').should == '2011-03-19'
71
71
  end
72
+
73
+ it "accepts the string 'today' to denote the current date" do
74
+ today = Date.today.strftime("%Y-%m-%d")
75
+ @client.format_date('today').should == today
76
+ end
77
+
78
+ it "accepts the string 'yesterday' to denote the day previous to today" do
79
+ yesterday = (Date.today-1).strftime("%Y-%m-%d")
80
+ @client.format_date('yesterday').should == yesterday
81
+ end
72
82
  end
73
83
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: fitgem
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.1
5
+ version: 0.2.2
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-05-12 00:00:00 -05:00
13
+ date: 2011-07-01 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -35,6 +35,50 @@ dependencies:
35
35
  version: "0"
36
36
  type: :development
37
37
  version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: guard
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: guard-rspec
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "0"
58
+ type: :development
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: rb-fsevent
62
+ prerelease: false
63
+ requirement: &id005 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: "0"
69
+ type: :development
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: growl
73
+ prerelease: false
74
+ requirement: &id006 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: "0"
80
+ type: :development
81
+ version_requirements: *id006
38
82
  description: A client library to send and retrieve workout/weight data from fitbit.com
39
83
  email:
40
84
  - fitgem@whazzmaster.com
@@ -48,12 +92,14 @@ files:
48
92
  - .gitignore
49
93
  - .rvmrc
50
94
  - Gemfile
95
+ - Guardfile
51
96
  - LICENSE
52
97
  - README.md
53
98
  - Rakefile
54
99
  - fitgem.gemspec
55
100
  - lib/fitgem.rb
56
101
  - lib/fitgem/activities.rb
102
+ - lib/fitgem/body_measurements.rb
57
103
  - lib/fitgem/client.rb
58
104
  - lib/fitgem/devices.rb
59
105
  - lib/fitgem/errors.rb
@@ -63,7 +109,6 @@ files:
63
109
  - lib/fitgem/time_range.rb
64
110
  - lib/fitgem/units.rb
65
111
  - lib/fitgem/users.rb
66
- - lib/fitgem/weight.rb
67
112
  - spec/fitgem_spec.rb
68
113
  - spec/spec_helper.rb
69
114
  has_rdoc: true
data/lib/fitgem/weight.rb DELETED
@@ -1,13 +0,0 @@
1
- module Fitgem
2
- class Client
3
-
4
- # ==========================================
5
- # Weight Update Methods
6
- # ==========================================
7
-
8
- def log_weight(weight, date, options={})
9
- post("/user/#{@user_id}/body/weight.json", options.merge(:weight => weight, :date => format_date(date)))
10
- end
11
-
12
- end
13
- end