simplificator-withings 0.2.8 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -39,9 +39,9 @@ will make an API call to populate the attributes, User.new just requires user_id
39
39
  * The gem is still under development and the API might change a bit.
40
40
  * Authentication by user_id/public_key is only supported when the user has activated sharing.
41
41
  He can do this either in the sharing overlay on my.withings.com or
42
- through the api (user.share = true) after authentication by email/password
42
+ through the api (user.share <LIST OF DEVICES>) after authentication by email/password
43
43
  * As soon as the user sets sharing to false (user.share = false) the public_key is reset
44
- and upon next activation of sharing (user.share = true) a new public_key is assigned.
44
+ and upon next activation of sharing a new public_key is assigned.
45
45
  * All the methods making remote calls can throw Withing::ApiError if something goes wrong
46
46
  (wrong public_key, missing parameters, ...).
47
47
  You can find more details on the error by looking at the status code in the error.
@@ -65,14 +65,15 @@ If you already have user id and public key and you do not need further informati
65
65
  user = User.new(:user_id => '<YOUR USER ID>', :public_key => '<YOUR PUBLIC_KEY>')
66
66
 
67
67
  enable/disable sharing, disabling it will reset the public key
68
- user.share=true
68
+ user.share(Withings::SCALE, Withings::BLOOD_PRESSURE_MONITOR)
69
+ user.share(0)
69
70
 
70
71
  You can handle subscriptions through the API
71
72
  user.subscribe_notification('http://foo.bar.com', 'test subscription')
72
73
  user.describe_notification('http://foo.bar.com')
73
74
  user.revoke_notification('http://foo.bar.com')
74
75
 
75
- And finally you can get measurements, after all it's a scale
76
+ And finally you can get measurements, after all this is what it's for
76
77
  user.measurement_groups(:per_page => 10, :page => 1, :end_at => Time.now)
77
78
  user.measurement_groups(:category => MeasurementGroup::CATEGORY_TARGET)
78
79
  user.measurement_groups(:last_updated_at => Time.at(12345))
data/lib/withings/base.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  module Withings
2
+ SCALE = 1
3
+ BLOOD_PRESSURE_MONITOR = 4
2
4
  end
3
5
 
4
6
  # Copied over from ActiveSupport
@@ -1,20 +1,23 @@
1
1
  class Withings::MeasurementGroup
2
- ATTRIBUTION_SCALE = 0
3
- ATTRIBUTION_SCALE_AMBIGUOUS = 1
4
- ATTRIBUTION_SCALE_MANUALLY = 2
5
- ATTRIBUTION_SCALE_MANUALLY_DURING_CREATION = 4
2
+ ATTRIBUTION_DEVICE = 0
3
+ ATTRIBUTION_DEVICE_AMBIGUOUS = 1
4
+ ATTRIBUTION_DEVICE_MANUALLY = 2
5
+ ATTRIBUTION_DEVICE_MANUALLY_DURING_CREATION = 4
6
6
 
7
7
  CATEGORY_MEASURE = 1
8
8
  CATEGORY_TARGET = 2
9
9
 
10
- TYPE_WEIGHT = 1
11
- TYPE_SIZE = 4
12
- TYPE_FAT_FREE_MASS_WEIGHT = 5
13
- TYPE_FAT_RATIO = 6
14
- TYPE_FAT_MASS_WEIGHT = 8
10
+ TYPE_WEIGHT = 1 # kg
11
+ TYPE_SIZE = 4 # m
12
+ TYPE_FAT_FREE_MASS_WEIGHT = 5 # kg
13
+ TYPE_FAT_RATIO = 6 # % (unitless)
14
+ TYPE_FAT_MASS_WEIGHT = 8 # kg
15
+ TYPE_DIASTOLIC_BLOOD_PRESSURE = 9 # mmHg (min, lower)
16
+ TYPE_SYSTOLIC_BLOOD_PRESSURE = 10 # mmHg (max, upper)
17
+ TYPE_HEART_PULSE = 11 # bpm
15
18
 
16
19
  attr_reader :group_id, :attribution, :created_at, :category
17
- attr_reader :weight, :size, :fat, :ratio, :fat_free
20
+ attr_reader :weight, :size, :fat, :ratio, :fat_free, :diastolic_blood_pressure, :systolic_blood_pressure, :heart_pulse
18
21
  def initialize(params)
19
22
  params = params.stringify_keys
20
23
  @group_id = params['grpid']
@@ -29,6 +32,9 @@ class Withings::MeasurementGroup
29
32
  when TYPE_FAT_MASS_WEIGHT then @fat = value
30
33
  when TYPE_FAT_RATIO then @ratio = value
31
34
  when TYPE_FAT_FREE_MASS_WEIGHT then @fat_free = value
35
+ when TYPE_DIASTOLIC_BLOOD_PRESSURE then @diastolic_blood_pressure = value
36
+ when TYPE_SYSTOLIC_BLOOD_PRESSURE then @systolic_blood_pressure = value
37
+ when TYPE_HEART_PULSE then @heart_pulse = value
32
38
  else raise "Unknown #{measure.inspect}"
33
39
  end
34
40
  end
@@ -43,7 +49,7 @@ class Withings::MeasurementGroup
43
49
  end
44
50
 
45
51
  def to_s
46
- "[ Weight: #{self.weight}, Fat: #{self.fat}, Size: #{self.size}, Ratio: #{self.ratio}, Free: #{self.fat_free}, ID: #{self.group_id}]"
52
+ "[ 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")})]"
47
53
  end
48
54
 
49
55
  def inspect
data/lib/withings/user.rb CHANGED
@@ -17,7 +17,6 @@ class Withings::User
17
17
  #
18
18
  # If you create a user yourself, then the only attributes of interest (required for calls to the API) are 'user_id' and 'public_key'
19
19
  #
20
-
21
20
  def initialize(params)
22
21
  params = params.stringify_keys
23
22
  @short_name = params['shortname']
@@ -25,7 +24,7 @@ class Withings::User
25
24
  @last_name = params['lastname']
26
25
  @public_key = params['publickey'] || params['public_key']
27
26
  @user_id = params['id'] || params['user_id']
28
- @share = params['ispublic'] == 1 ? true : false
27
+ @share = params['ispublic']
29
28
  @birthdate = Time.at(params['birthdate']) if params['birthdate']
30
29
  @gender = params['gender'] == 0 ? :male : params['gender'] == 1 ? :female : nil
31
30
  @fat_method = params['fatmethod']
@@ -73,15 +72,15 @@ class Withings::User
73
72
  end
74
73
  end
75
74
 
76
- # enable or disable sharing
77
- def share=(value)
78
- @share = value
79
- connection.get_request('/user', :action => :update, :ispublic => is_public?)
75
+ def share(*devices)
76
+ devices = [Withings::SCALE, Withings::BLOOD_PRESSURE_MONITOR] if Array(devices).empty?
77
+ @share = devices.inject('|'.to_sym)
78
+ connection.get_request('/user', :action => :update, :ispublic => @share)
80
79
  end
81
80
 
82
- # sharing enabled?
83
- def share?
84
- @share
81
+ # sharing enabled for a device?
82
+ def share?(device = Withings::DEVICE_SCALE | Withings::DEVICE_BLOOD_PRESSURE_MONITOR)
83
+ @share & device
85
84
  end
86
85
 
87
86
  def to_s
@@ -104,9 +103,4 @@ class Withings::User
104
103
  Withings::Connection.get_request('/once', :action => :get)['once']
105
104
  end
106
105
 
107
- # convert from boolean (@share) to 1/0 as required by the API
108
- def is_public?
109
- @share ? 1 : 0
110
- end
111
-
112
106
  end
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{simplificator-withings}
5
- s.version = "0.2.8"
5
+ s.version = "0.3.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"]
9
- s.date = %q{2010-08-17}
9
+ s.date = %q{2011-03-01}
10
10
  s.description = %q{A withings API implementation in ruby. Created for the evita project at evita.ch}
11
11
  s.email = %q{info@simplificator.com}
12
12
  s.extra_rdoc_files = [
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: 7
5
- prerelease: false
4
+ hash: 19
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 8
10
- version: 0.2.8
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - pascalbetz
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-17 00:00:00 +02:00
18
+ date: 2011-03-01 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  requirements: []
115
115
 
116
116
  rubyforge_project:
117
- rubygems_version: 1.3.7
117
+ rubygems_version: 1.4.2
118
118
  signing_key:
119
119
  specification_version: 3
120
120
  summary: API implementation for withings.com