validic 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/.rspec +3 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +80 -0
- data/LICENSE.txt +22 -0
- data/README.md +61 -0
- data/Rakefile +7 -0
- data/lib/validic.rb +32 -0
- data/lib/validic/activity.rb +73 -0
- data/lib/validic/client.rb +74 -0
- data/lib/validic/diabetes.rb +81 -0
- data/lib/validic/fitness.rb +75 -0
- data/lib/validic/general_measurement.rb +113 -0
- data/lib/validic/nutrition.rb +81 -0
- data/lib/validic/organization.rb +46 -0
- data/lib/validic/profile.rb +43 -0
- data/lib/validic/request.rb +36 -0
- data/lib/validic/routine.rb +73 -0
- data/lib/validic/sleep.rb +77 -0
- data/lib/validic/third_party_app.rb +37 -0
- data/lib/validic/tobacco_cessation.rb +73 -0
- data/lib/validic/user.rb +71 -0
- data/lib/validic/version.rb +3 -0
- data/lib/validic/weight.rb +74 -0
- data/spec/.DS_Store +0 -0
- data/spec/spec_helper.rb +43 -0
- data/spec/validic/activity_spec.rb +97 -0
- data/spec/validic/client_spec.rb +11 -0
- data/spec/validic/diabetes_spec.rb +88 -0
- data/spec/validic/fitness_spec.rb +84 -0
- data/spec/validic/general_measurement_spec.rb +120 -0
- data/spec/validic/nutrition_spec.rb +90 -0
- data/spec/validic/organization_spec.rb +46 -0
- data/spec/validic/profile_spec.rb +46 -0
- data/spec/validic/routine_spec.rb +81 -0
- data/spec/validic/sleep_spec.rb +85 -0
- data/spec/validic/third_party_app_spec.rb +32 -0
- data/spec/validic/tobacco_cessation_spec.rb +80 -0
- data/spec/validic/user_spec.rb +49 -0
- data/spec/validic/weight_spec.rb +87 -0
- data/spec/validic_spec.rb +38 -0
- data/validic.gemspec +37 -0
- metadata +353 -0
@@ -0,0 +1,75 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Validic
|
4
|
+
module Fitness
|
5
|
+
|
6
|
+
##
|
7
|
+
# Get Fitness Activities base on `access_token`
|
8
|
+
# Default data fetched is from yesterday
|
9
|
+
#
|
10
|
+
# @params :organization_id - for organization specific
|
11
|
+
# @params :user_id - for user specific
|
12
|
+
#
|
13
|
+
# @params :start_date - optional
|
14
|
+
# @params :end_date - optional
|
15
|
+
# @params :access_token - override for default access_token
|
16
|
+
# @params :source - optional - data per source (e.g 'fitbit')
|
17
|
+
# @params :expanded - optional - will show the raw data
|
18
|
+
#
|
19
|
+
# @return [Hashie::Mash] with list of Fitness
|
20
|
+
def get_fitnesses(options={})
|
21
|
+
organization_id = options[:organization_id]
|
22
|
+
user_id = options[:user_id]
|
23
|
+
options = {
|
24
|
+
start_date: options[:start_date],
|
25
|
+
end_date: options[:end_date],
|
26
|
+
access_token: options[:access_token],
|
27
|
+
source: options[:source],
|
28
|
+
expanded: options[:expanded]
|
29
|
+
}
|
30
|
+
|
31
|
+
if options[:access_token] && organization_id
|
32
|
+
response = get("/#{Validic.api_version}/organizations/#{organization_id}/fitness.json", options)
|
33
|
+
elsif user_id
|
34
|
+
response = get("/#{Validic.api_version}/users/#{user_id}/fitness.json", options)
|
35
|
+
else
|
36
|
+
response = get("/#{Validic.api_version}/fitness.json", options)
|
37
|
+
end
|
38
|
+
response if response
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# Create Fitness base on `access_token` and `authentication_token`
|
43
|
+
#
|
44
|
+
# @params :access_token - *required if not specified on your initializer / organization access_token
|
45
|
+
# @params :authentication_token - *required / authentication_token of a specific user
|
46
|
+
#
|
47
|
+
# @params :timestamp
|
48
|
+
# @params :primary_type
|
49
|
+
# @params :intensity
|
50
|
+
# @params :start_time
|
51
|
+
# @params :total_distance
|
52
|
+
# @params :duration
|
53
|
+
# @params :source
|
54
|
+
#
|
55
|
+
# @return success
|
56
|
+
def create_fitness(options={})
|
57
|
+
options = {
|
58
|
+
access_token: options[:access_token],
|
59
|
+
fitness: {
|
60
|
+
timestamp: options[:timestamp],
|
61
|
+
primary_type: options[:primary_type],
|
62
|
+
intensity: options[:intensity],
|
63
|
+
start_time: options[:start_time],
|
64
|
+
total_distance: options[:total_distance],
|
65
|
+
duration: options[:duration],
|
66
|
+
source: options[:source]
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
response = post("/#{Validic.api_version}/fitness.json", options)
|
71
|
+
response if response
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Validic
|
4
|
+
module GeneralMeasurement
|
5
|
+
|
6
|
+
##
|
7
|
+
# Get GeneralMeasurement Activities base on `access_token`
|
8
|
+
# Default data fetched is from yesterday
|
9
|
+
#
|
10
|
+
# @params :organization_id - for organization specific
|
11
|
+
# @params :user_id - for user specific
|
12
|
+
#
|
13
|
+
# @params :start_date - optional
|
14
|
+
# @params :end_date - optional
|
15
|
+
# @params :access_token - override for default access_token
|
16
|
+
# @params :source - optional - data per source (e.g 'fitbit')
|
17
|
+
# @params :expanded - optional - will show the raw data
|
18
|
+
#
|
19
|
+
# @return [Hashie::Mash] with list of GeneralMeasurement
|
20
|
+
def get_general_measurements(options={})
|
21
|
+
organization_id = options[:organization_id]
|
22
|
+
user_id = options[:user_id]
|
23
|
+
options = {
|
24
|
+
start_date: options[:start_date],
|
25
|
+
end_date: options[:end_date],
|
26
|
+
access_token: options[:access_token],
|
27
|
+
source: options[:source],
|
28
|
+
expanded: options[:expanded]
|
29
|
+
}
|
30
|
+
|
31
|
+
if organization_id
|
32
|
+
response = get("/#{Validic.api_version}/organizations/#{organization_id}/biometrics.json", options)
|
33
|
+
elsif user_id
|
34
|
+
response = get("/#{Validic.api_version}/users/#{user_id}/biometrics.json", options)
|
35
|
+
else
|
36
|
+
response = get("/#{Validic.api_version}/biometrics.json", options)
|
37
|
+
end
|
38
|
+
response if response
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# Create GeneralMeasurement base on `access_token` and `authentication_token`
|
43
|
+
#
|
44
|
+
# @params :access_token - *required if not specified on your initializer / organization access_token
|
45
|
+
# @params :authentication_token - *required / authentication_token of a specific user
|
46
|
+
#
|
47
|
+
# @params :blood_calcium
|
48
|
+
# @params :blood_chromium
|
49
|
+
# @params :blood_folic_acid
|
50
|
+
# @params :blood_magnesium
|
51
|
+
# @params :blood_potassium
|
52
|
+
# @params :blood_sodium
|
53
|
+
# @params :blood_vitamin_b12
|
54
|
+
# @params :blood_zinc
|
55
|
+
# @params :creatine_kinase
|
56
|
+
# @params :crp
|
57
|
+
# @params :diastolic
|
58
|
+
# @params :ferritin
|
59
|
+
# @params :hdl
|
60
|
+
# @params :hscrp
|
61
|
+
# @params :il6
|
62
|
+
# @params :ldl
|
63
|
+
# @params :resting_heartrate
|
64
|
+
# @params :systolic
|
65
|
+
# @params :testosterone
|
66
|
+
# @params :total_cholesterol
|
67
|
+
# @params :tsh
|
68
|
+
# @params :uric_acid
|
69
|
+
# @params :vitamin_d
|
70
|
+
# @params :white_cell_count
|
71
|
+
# @params :timestamp
|
72
|
+
# @params :source
|
73
|
+
#
|
74
|
+
# @return success
|
75
|
+
def create_general_measurement(options={})
|
76
|
+
options = {
|
77
|
+
access_token: options[:access_token],
|
78
|
+
general_measurement: {
|
79
|
+
blood_calcium: options[:blood_calcium],
|
80
|
+
blood_chromium: options[:blood_chromium],
|
81
|
+
blood_folic_acid: options[:blood_folic_acid],
|
82
|
+
blood_magnesium: options[:blood_magnesium],
|
83
|
+
blood_potassium: options[:blood_potassium],
|
84
|
+
blood_sodium: options[:blood_sodium],
|
85
|
+
blood_vitamin_b12: options[:blood_vitamin_b12],
|
86
|
+
blood_zinc: options[:blood_zinc],
|
87
|
+
creatine_kinase: options[:creatine_kinase],
|
88
|
+
crp: options[:crp],
|
89
|
+
diastolic: options[:diastolic],
|
90
|
+
ferritin: options[:ferritin],
|
91
|
+
hdl: options[:hdl],
|
92
|
+
hscrp: options[:hscrp],
|
93
|
+
il6: options[:il6],
|
94
|
+
ldl: options[:ldl],
|
95
|
+
resting_heartrate: options[:resting_heartrate],
|
96
|
+
systolic: options[:systolic],
|
97
|
+
testosterone: options[:testosterone],
|
98
|
+
total_cholesterol: options[:total_cholesterol],
|
99
|
+
tsh: options[:tsh],
|
100
|
+
uric_acid: options[:uric_acid],
|
101
|
+
vitamin_d: options[:vitamin_d],
|
102
|
+
white_cell_count: options[:white_cell_count],
|
103
|
+
timestamp: options[:timestamp],
|
104
|
+
source: options[:source]
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
response = post("/#{Validic.api_version}/biometrics.json", options)
|
109
|
+
response if response
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Validic
|
4
|
+
module Nutrition
|
5
|
+
|
6
|
+
##
|
7
|
+
# Get Nutrition Activities base on `access_token`
|
8
|
+
# Default data fetched is from yesterday
|
9
|
+
#
|
10
|
+
# @params :organization_id - for organization specific
|
11
|
+
# @params :user_id - for user specific
|
12
|
+
#
|
13
|
+
# @params :start_date - optional
|
14
|
+
# @params :end_date - optional
|
15
|
+
# @params :access_token - override for default access_token
|
16
|
+
# @params :source - optional - data per source (e.g 'fitbit')
|
17
|
+
# @params :expanded - optional - will show the raw data
|
18
|
+
#
|
19
|
+
# @return [Hashie::Mash] with list of Nutrition
|
20
|
+
def get_nutritions(options={})
|
21
|
+
organization_id = options[:organization_id]
|
22
|
+
user_id = options[:user_id]
|
23
|
+
options = {
|
24
|
+
start_date: options[:start_date],
|
25
|
+
end_date: options[:end_date],
|
26
|
+
access_token: options[:access_token],
|
27
|
+
source: options[:source],
|
28
|
+
expanded: options[:expanded]
|
29
|
+
}
|
30
|
+
|
31
|
+
if organization_id
|
32
|
+
response = get("/#{Validic.api_version}/organizations/#{organization_id}/nutrition.json", options)
|
33
|
+
elsif user_id
|
34
|
+
response = get("/#{Validic.api_version}/users/#{user_id}/nutrition.json", options)
|
35
|
+
else
|
36
|
+
response = get("/#{Validic.api_version}/nutrition.json", options)
|
37
|
+
end
|
38
|
+
response if response
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# Create Nutrition base on `access_token` and `authentication_token`
|
43
|
+
#
|
44
|
+
# @params :access_token - *required if not specified on your initializer / organization access_token
|
45
|
+
# @params :authentication_token - *required / authentication_token of a specific user
|
46
|
+
#
|
47
|
+
# @params :calories
|
48
|
+
# @params :carbohydrates
|
49
|
+
# @params :fat
|
50
|
+
# @params :fiber
|
51
|
+
# @params :protein
|
52
|
+
# @params :sodium
|
53
|
+
# @params :water
|
54
|
+
# @params :timestamp
|
55
|
+
# @params :meal
|
56
|
+
# @params :source
|
57
|
+
#
|
58
|
+
# @return success
|
59
|
+
def create_nutrition(options={})
|
60
|
+
options = {
|
61
|
+
access_token: options[:access_token],
|
62
|
+
nutrition: {
|
63
|
+
calories: options[:calories],
|
64
|
+
carbohydrates: options[:carbohydrates],
|
65
|
+
fat: options[:fat],
|
66
|
+
fiber: options[:fiber],
|
67
|
+
protein: options[:protein],
|
68
|
+
sodium: options[:sodium],
|
69
|
+
water: options[:water],
|
70
|
+
timestamp: options[:timestamp],
|
71
|
+
meal: options[:meal],
|
72
|
+
source: options[:source]
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
response = post("/#{Validic.api_version}/nutrition.json", options)
|
77
|
+
response if response
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Validic
|
4
|
+
module Organization
|
5
|
+
|
6
|
+
##
|
7
|
+
# Get Organization base on `access_token` and organization_id
|
8
|
+
#
|
9
|
+
# @params :access_token
|
10
|
+
# @return [Hashie::Mash] with list of Organization
|
11
|
+
def get_organization(options={})
|
12
|
+
organization_id = options[:organization_id]
|
13
|
+
options = {
|
14
|
+
access_token: options[:access_token]
|
15
|
+
}
|
16
|
+
response = get("/#{Validic.api_version}/organizations/#{organization_id}.json", options)
|
17
|
+
response if response
|
18
|
+
end
|
19
|
+
|
20
|
+
##
|
21
|
+
# Get Users base on `access_token` and organization_id
|
22
|
+
#
|
23
|
+
# @params :status - optional (active or inactive) default :all
|
24
|
+
# @params :access_token - optional
|
25
|
+
# @params :start_date - optional
|
26
|
+
# @params :end_date - optional
|
27
|
+
# @params :offset - optional
|
28
|
+
# @params :limit - optional
|
29
|
+
#
|
30
|
+
# @return [Hashie::Mash] with list of Organization
|
31
|
+
def get_users(options={})
|
32
|
+
organization_id = options[:organization_id]
|
33
|
+
options = {
|
34
|
+
access_token: options[:access_token],
|
35
|
+
start_data: options[:start_date],
|
36
|
+
end_date: options[:end_date],
|
37
|
+
offset: options[:offset],
|
38
|
+
limit: options[:limit],
|
39
|
+
status: options[:status]
|
40
|
+
}
|
41
|
+
response = get("/#{Validic.api_version}/organizations/#{organization_id}/users.json", options)
|
42
|
+
response if response
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Validic
|
4
|
+
module Profile
|
5
|
+
|
6
|
+
##
|
7
|
+
# Get Profile base on `access_token`
|
8
|
+
#
|
9
|
+
# @params :access_token - override for default access_token
|
10
|
+
# @return [Hashie::Mash] with list of Profile
|
11
|
+
def get_profile(options={})
|
12
|
+
options = {
|
13
|
+
access_token: options[:access_token]
|
14
|
+
}
|
15
|
+
response = get("/#{Validic.api_version}/profile.json", options)
|
16
|
+
response if response
|
17
|
+
end
|
18
|
+
|
19
|
+
##
|
20
|
+
# Update Profile base on `access_token`
|
21
|
+
#
|
22
|
+
# @return success
|
23
|
+
# def update_profile(options={})
|
24
|
+
# options = {
|
25
|
+
# profile: {
|
26
|
+
# gender: options[:gender],
|
27
|
+
# location: options[:location],
|
28
|
+
# birth_year: options[:birth_year],
|
29
|
+
# height: options[:height],
|
30
|
+
# weight: options[:weight],
|
31
|
+
# first_name: options[:first_name],
|
32
|
+
# last_name: options[:last_name]
|
33
|
+
# }
|
34
|
+
# }
|
35
|
+
|
36
|
+
# response = post("/#{Validic.api_version}/profile.json", options)
|
37
|
+
# response if response
|
38
|
+
# end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'active_support/core_ext'
|
3
|
+
require 'multi_json'
|
4
|
+
|
5
|
+
module Validic
|
6
|
+
module Request
|
7
|
+
|
8
|
+
def get(path, options)
|
9
|
+
request(:get, path, options)
|
10
|
+
end
|
11
|
+
|
12
|
+
def post(path, options)
|
13
|
+
request(:post, path, options)
|
14
|
+
end
|
15
|
+
|
16
|
+
def put(path, options)
|
17
|
+
request(:put, path, options)
|
18
|
+
end
|
19
|
+
|
20
|
+
def request(method, path, options)
|
21
|
+
options[:access_token] = options[:access_token].nil? ? Validic.access_token : options[:access_token]
|
22
|
+
response = connection.send(method) do |request|
|
23
|
+
case method
|
24
|
+
when :get
|
25
|
+
request.url(path, options)
|
26
|
+
when :post, :put
|
27
|
+
request.path = path
|
28
|
+
request.body = MultiJson.encode(options) unless options.empty?
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
response.body
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Validic
|
4
|
+
module Routine
|
5
|
+
|
6
|
+
##
|
7
|
+
# Get Routine Activities base on `access_token`
|
8
|
+
# Default data fetched is from yesterday
|
9
|
+
#
|
10
|
+
# @params :organization_id - for organization specific
|
11
|
+
# @params :user_id - for user specific
|
12
|
+
#
|
13
|
+
# @params :start_date - optional
|
14
|
+
# @params :end_date - optional
|
15
|
+
# @params :access_token - override for default access_token
|
16
|
+
# @params :source - optional - data per source (e.g 'fitbit')
|
17
|
+
# @params :expanded - optional - will show the raw data
|
18
|
+
#
|
19
|
+
# @return [Hashie::Mash] with list of Routine
|
20
|
+
def get_routines(options={})
|
21
|
+
organization_id = options[:organization_id]
|
22
|
+
user_id = options[:user_id]
|
23
|
+
options = {
|
24
|
+
start_date: options[:start_date],
|
25
|
+
end_date: options[:end_date],
|
26
|
+
access_token: options[:access_token],
|
27
|
+
source: options[:source],
|
28
|
+
expanded: options[:expanded]
|
29
|
+
}
|
30
|
+
|
31
|
+
if organization_id
|
32
|
+
response = get("/#{Validic.api_version}/organizations/#{organization_id}/routine.json", options)
|
33
|
+
elsif user_id
|
34
|
+
response = get("/#{Validic.api_version}/users/#{user_id}/routine.json", options)
|
35
|
+
else
|
36
|
+
response = get("/#{Validic.api_version}/routine.json", options)
|
37
|
+
end
|
38
|
+
response if response
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# Create Routine base on `access_token` and `authentication_token`
|
43
|
+
#
|
44
|
+
# @params :access_token - *required if not specified on your initializer / organization access_token
|
45
|
+
# @params :authentication_token - *required / authentication_token of a specific user
|
46
|
+
#
|
47
|
+
# @params :steps
|
48
|
+
# @params :stairs_climbed
|
49
|
+
# @params :calories_burned
|
50
|
+
# @params :calories_consumed
|
51
|
+
# @params :timestamp
|
52
|
+
# @params :source
|
53
|
+
#
|
54
|
+
# @return success
|
55
|
+
def create_routine(options={})
|
56
|
+
options = {
|
57
|
+
access_token: options[:access_token],
|
58
|
+
routine: {
|
59
|
+
steps: options[:steps],
|
60
|
+
stairs_climbed: options[:stairs_climbed],
|
61
|
+
calories_burned: options[:calories_burned],
|
62
|
+
calories_consumed: options[:calories_consumed],
|
63
|
+
timestamp: options[:timestamp],
|
64
|
+
source: options[:source]
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
response = post("/#{Validic.api_version}/routine.json", options)
|
69
|
+
response if response
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|