simplificator-withings 0.3.4 → 0.4.0

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/README.rdoc CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  This is a ruby implementation for the Withings API. Description of the API can be found here: http://www.withings.com/en/api
4
4
 
5
+ == Versions ==
6
+
7
+ Note that this release (0.4.0) breaks the API of previous releases:
8
+
9
+ === User.authenticate ===
10
+
11
+ User.authenticate() has been replaced by User.userlist
12
+
13
+ There is no description available and no guarantee on the order that users are returned by the API (and yes, there can be many users for a single Account)
14
+ so it seems best to leave the decision to the users of the API.
15
+
16
+ The old method is still there but please update your code. It will be removed in the next release.
17
+
18
+ === MeasurementGroup ===
19
+
20
+ MeasurementGroup#createt_at has been replaced by MeasurementGroup#taken_on
21
+
22
+ Created at is usually the timestamp at which a record was created. But MeasurementGroup#created_at was the timestamp when you actually took the measurement. You can also take measurements (via the Web UI on withings.com) which are for a past date. The record is created today, but the measurement
23
+ was taken on 2 weeks ago.
24
+
25
+ The old method is still there but please update your code. It will be removed in the next release.
26
+
5
27
  == Installation
6
28
 
7
29
  gem install simplificator-withings
@@ -56,7 +78,7 @@ All classes are name-spaced, if your other code allows you can include Withings
56
78
  include Withings
57
79
 
58
80
  A user can be authenticated with email address and password
59
- user = User.authenticate('<YOUR EMAIL ADDRESS>', '<YOUR PASSWORD>')
81
+ user = User.userlist('<YOUR EMAIL ADDRESS>', '<YOUR PASSWORD>').first # or any other user which is returned
60
82
 
61
83
  Or you can fetch details if you have the user id and public key
62
84
  user = User.info('<YOUR USER ID>', '<YOUR PUBLIC KEY>')
@@ -65,6 +87,7 @@ If you already have user id and public key and you do not need further informati
65
87
  user = User.new(:user_id => '<YOUR USER ID>', :public_key => '<YOUR PUBLIC_KEY>')
66
88
 
67
89
  enable/disable sharing, disabling it will reset the public key
90
+ user.share() # share all
68
91
  user.share(Withings::SCALE, Withings::BLOOD_PRESSURE_MONITOR)
69
92
  user.share(0)
70
93
 
@@ -79,6 +102,8 @@ And finally you can get measurements, after all this is what it's for
79
102
  user.measurement_groups(:last_updated_at => Time.at(12345))
80
103
  user.measurement_groups(:start_at => Time.at(12345), :end_at => Time.at(67890))
81
104
  user.measurement_groups(:measurement_type => MeasurementGroup::TYPE_FAT)
105
+ user.measurement_groups(:device => Withings::SCALE)
106
+
82
107
 
83
108
  == Note on keys in hashes
84
109
 
@@ -19,13 +19,13 @@ class Withings::MeasurementGroup
19
19
  BLOOD_PRESSURE_MONITOR_TYPES = [TYPE_DIASTOLIC_BLOOD_PRESSURE, TYPE_SYSTOLIC_BLOOD_PRESSURE, TYPE_HEART_PULSE]
20
20
  SCALE_TYPES = [TYPE_WEIGHT, TYPE_SIZE, TYPE_FAT_FREE_MASS_WEIGHT, TYPE_FAT_RATIO, TYPE_FAT_MASS_WEIGHT]
21
21
 
22
- attr_reader :group_id, :attribution, :created_at, :category
22
+ attr_reader :group_id, :attribution, :taken_at, :category
23
23
  attr_reader :weight, :size, :fat, :ratio, :fat_free, :diastolic_blood_pressure, :systolic_blood_pressure, :heart_pulse
24
24
  def initialize(params)
25
25
  params = params.stringify_keys
26
26
  @group_id = params['grpid']
27
27
  @attribution = params['attrib']
28
- @created_at = Time.at(params['date'])
28
+ @taken_at = Time.at(params['date'])
29
29
  @category = params['category']
30
30
  params['measures'].each do |measure|
31
31
  value = (measure['value'] * 10 ** measure['unit']).to_f
@@ -43,6 +43,10 @@ class Withings::MeasurementGroup
43
43
  end
44
44
  end
45
45
 
46
+ def created_at
47
+ $stderr.puts "created_at has been deprecated in favour of taken_at. Please updated your code."
48
+ end
49
+
46
50
  def measure?
47
51
  self.category == CATEGORY_MEASURE
48
52
  end
@@ -52,7 +56,7 @@ class Withings::MeasurementGroup
52
56
  end
53
57
 
54
58
  def to_s
55
- "[ Weight: #{self.weight}, Fat: #{self.fat}, Size: #{self.size}, Ratio: #{self.ratio}, Free: #{self.fat_free}, Blood Pressure: #{self.diastolic_blood_pressure}/#{self.systolic_blood_pressure} @ #{self.heart_pulse}, ID: #{self.group_id} (created at: #{self.created_at.strftime("%d.%m.%Y")})]"
59
+ "[ Weight: #{self.weight}, Fat: #{self.fat}, Size: #{self.size}, Ratio: #{self.ratio}, Free: #{self.fat_free}, Blood Pressure: #{self.diastolic_blood_pressure}/#{self.systolic_blood_pressure} @ #{self.heart_pulse}, ID: #{self.group_id} (created at: #{self.taken_at.strftime("%d.%m.%Y")})]"
56
60
  end
57
61
 
58
62
  def inspect
data/lib/withings/user.rb CHANGED
@@ -1,9 +1,25 @@
1
1
  class Withings::User
2
2
  attr_reader :short_name, :public_key, :user_id, :birthdate, :fat_method, :first_name, :last_name, :gender
3
3
 
4
+
5
+ # Listing the users for this account
6
+ #
7
+ def self.userlist(email, password)
8
+ response = Withings::Connection.get_request('/account', :action => :getuserslist, :email => email, :hash => auth_hash(email, password))
9
+ response['users'].map do |item|
10
+ Withings::User.new(item)
11
+ end
12
+ end
13
+
14
+
4
15
  # Authenticate a user by email/password
5
16
  #
6
17
  def self.authenticate(email, password)
18
+ $stderr.puts <<-EOS
19
+ User.authenticate(email, pwd) has been deprecated in favour of User.userlist(email, pwd) as there is no description or guarantee
20
+ about the order the users are returned.
21
+ If you need the same behaviour as before: User.userlist(email, pwd).first
22
+ EOS
7
23
  response = Withings::Connection.get_request('/account', :action => :getuserslist, :email => email, :hash => auth_hash(email, password))
8
24
  Withings::User.new(response['users'].first)
9
25
  end
@@ -53,7 +69,7 @@ class Withings::User
53
69
  # - :start_at (default: empty)
54
70
  # - :end_at (default: empty)
55
71
  # - :last_udpated_at (default: empty)
56
- #
72
+ # - :device (default: empty)
57
73
  # Parameters are described in WBS api
58
74
  def measurement_groups(params = {})
59
75
  params = params.stringify_keys
@@ -65,7 +81,7 @@ class Withings::User
65
81
  options[:startdate] = params['start_at'].to_i if params['start_at']
66
82
  options[:enddate] = params['end_at'].to_i if params['end_at']
67
83
  options[:lastupdate] = params['last_updated_at'].to_i if params['last_updated_at']
68
-
84
+ options[:devtype] = params['device'] if params['device']
69
85
  response = connection.get_request('/measure', options.merge(:action => :getmeas))
70
86
  response['measuregrps'].map do |group|
71
87
  Withings::MeasurementGroup.new(group)
@@ -86,7 +102,7 @@ class Withings::User
86
102
  def to_s
87
103
  "[User #{short_name} / #{:user_id} / #{share?}]"
88
104
  end
89
-
105
+
90
106
 
91
107
  protected
92
108
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{simplificator-withings}
5
- s.version = "0.3.4"
5
+ s.version = "0.4.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["pascalbetz"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplificator-withings
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
9
8
  - 4
10
- version: 0.3.4
9
+ - 0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - pascalbetz