validic 0.2.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.
Files changed (43) hide show
  1. data/.gitignore +18 -0
  2. data/.rspec +3 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +80 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +61 -0
  7. data/Rakefile +7 -0
  8. data/lib/validic.rb +32 -0
  9. data/lib/validic/activity.rb +73 -0
  10. data/lib/validic/client.rb +74 -0
  11. data/lib/validic/diabetes.rb +81 -0
  12. data/lib/validic/fitness.rb +75 -0
  13. data/lib/validic/general_measurement.rb +113 -0
  14. data/lib/validic/nutrition.rb +81 -0
  15. data/lib/validic/organization.rb +46 -0
  16. data/lib/validic/profile.rb +43 -0
  17. data/lib/validic/request.rb +36 -0
  18. data/lib/validic/routine.rb +73 -0
  19. data/lib/validic/sleep.rb +77 -0
  20. data/lib/validic/third_party_app.rb +37 -0
  21. data/lib/validic/tobacco_cessation.rb +73 -0
  22. data/lib/validic/user.rb +71 -0
  23. data/lib/validic/version.rb +3 -0
  24. data/lib/validic/weight.rb +74 -0
  25. data/spec/.DS_Store +0 -0
  26. data/spec/spec_helper.rb +43 -0
  27. data/spec/validic/activity_spec.rb +97 -0
  28. data/spec/validic/client_spec.rb +11 -0
  29. data/spec/validic/diabetes_spec.rb +88 -0
  30. data/spec/validic/fitness_spec.rb +84 -0
  31. data/spec/validic/general_measurement_spec.rb +120 -0
  32. data/spec/validic/nutrition_spec.rb +90 -0
  33. data/spec/validic/organization_spec.rb +46 -0
  34. data/spec/validic/profile_spec.rb +46 -0
  35. data/spec/validic/routine_spec.rb +81 -0
  36. data/spec/validic/sleep_spec.rb +85 -0
  37. data/spec/validic/third_party_app_spec.rb +32 -0
  38. data/spec/validic/tobacco_cessation_spec.rb +80 -0
  39. data/spec/validic/user_spec.rb +49 -0
  40. data/spec/validic/weight_spec.rb +87 -0
  41. data/spec/validic_spec.rb +38 -0
  42. data/validic.gemspec +37 -0
  43. metadata +353 -0
@@ -0,0 +1,77 @@
1
+ # encoding: utf-8
2
+
3
+ module Validic
4
+ module Sleep
5
+
6
+ ##
7
+ # Get Sleep 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 Sleep
20
+ def get_sleeps(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}/sleep.json", options)
33
+ elsif user_id
34
+ response = get("/#{Validic.api_version}/users/#{user_id}/sleep.json", options)
35
+ else
36
+ response = get("/#{Validic.api_version}/sleep.json", options)
37
+ end
38
+ response if response
39
+ end
40
+
41
+ ##
42
+ # Create Sleep 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 :total_sleep
48
+ # @params :awake
49
+ # @params :deep
50
+ # @params :light
51
+ # @params :rem
52
+ # @params :times_woken
53
+ # @params :timestamp
54
+ # @params :source
55
+ #
56
+ # @return success
57
+ def create_sleep(options={})
58
+ options = {
59
+ access_token: options[:access_token],
60
+ sleep: {
61
+ total_sleep: options[:total_sleep],
62
+ awake: options[:awake],
63
+ deep: options[:deep],
64
+ light: options[:light],
65
+ rem: options[:rem],
66
+ times_woken: options[:times_woken],
67
+ timestamp: options[:timestamp],
68
+ source: options[:source]
69
+ }
70
+ }
71
+
72
+ response = post("/#{Validic.api_version}/sleep.json", options)
73
+ response if response
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+
3
+ module Validic
4
+ module ThirdPartyApp
5
+
6
+ ##
7
+ # Get List of Third Party Apps available base on `access_token` and organization_id
8
+ #
9
+ # params[:organization_id] required parameter
10
+ # params[:access_token] required parameter
11
+ #
12
+ # @return [Hashie::Mash] with list of Organization
13
+ def get_apps(options={})
14
+ organization_id = options[:organization_id]
15
+ options = {
16
+ access_token: options[:access_token],
17
+ authentication_token: options[:authentication_token]
18
+ }
19
+ response = get("/#{Validic.api_version}/organizations/#{organization_id}/apps.json", options)
20
+ response if response
21
+ end
22
+
23
+ ##
24
+ # Get User List of Third Party Synced Apps available base on `authentication_token`
25
+ #
26
+ # params[:auth_token] User authentication parameter
27
+ #
28
+ # @return [Hashie::Mash] with list of Organization
29
+ def get_synced_apps(options={})
30
+ options = {
31
+ authentication_token: options[:authentication_token]
32
+ }
33
+ response = get("/#{Validic.api_version}/sync_apps.json", options)
34
+ response if response
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,73 @@
1
+ # encoding: utf-8
2
+
3
+ module Validic
4
+ module TobaccoCessation
5
+
6
+ ##
7
+ # Get TobaccoCessation 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 TobaccoCessation
20
+ def get_tobacco_cessations(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}/tobacco_cessation.json", options)
33
+ elsif user_id
34
+ response = get("/#{Validic.api_version}/users/#{user_id}/tobacco_cessation.json", options)
35
+ else
36
+ response = get("/#{Validic.api_version}/tobacco_cessation.json", options)
37
+ end
38
+ response if response
39
+ end
40
+
41
+ ##
42
+ # Create TobaccoCessation 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 :cigarettes_allowed
48
+ # @params :cigarettes_smoked
49
+ # @params :cravings
50
+ # @params :last_smoked
51
+ # @params :timestamp
52
+ # @params :source
53
+ #
54
+ # @return success
55
+ def create_tobacco_cessation(options={})
56
+ options = {
57
+ access_token: options[:access_token],
58
+ tobacco_cessation: {
59
+ cigarettes_allowed: options[:cigarettes_allowed],
60
+ cigarettes_smoked: options[:cigarettes_smoked],
61
+ cravings: options[:cravings],
62
+ last_smoked: options[:last_smoked],
63
+ timestamp: options[:timestamp],
64
+ source: options[:source]
65
+ }
66
+ }
67
+
68
+ response = post("/#{Validic.api_version}/tobacco_cessation.json", options)
69
+ response if response
70
+ end
71
+
72
+ end
73
+ end
@@ -0,0 +1,71 @@
1
+ # encoding: utf-8
2
+
3
+ module Validic
4
+ module User
5
+
6
+ ##
7
+ # Get User id base on `access_token`
8
+ #
9
+ # @return id
10
+ def me(options={})
11
+ options = {
12
+ access_token: options[:access_token]
13
+ }
14
+ response = get("/#{Validic.api_version}/me.json", options)
15
+ response if response
16
+ end
17
+
18
+ ##
19
+ # POST User info for provisioning base on `access_token`
20
+ #
21
+ # @params[:organization_id] -- organization_id -- String
22
+ # @params[:access_token] -- organization's access_token -- String
23
+ # @params[:uid] -- uid for the new user -- String
24
+ # @params[:height] -- info for user -- Integer
25
+ # @params[:weight] -- info for user -- String
26
+ # @params[:location] -- info for user -- String
27
+ # @params[:gender] -- info for user -- String
28
+ # @params[:birth_year] -- info for user -- String
29
+ #
30
+ # @return user object
31
+ def user_provision(options={})
32
+ organization_id = options[:organization_id]
33
+ options = {
34
+ access_token: options[:access_token],
35
+ user: {
36
+ uid: options[:uid],
37
+ profile: {
38
+ height: options[:height],
39
+ gender: options[:gender],
40
+ location: options[:location],
41
+ weight: options[:weight]
42
+ }
43
+ }
44
+ }
45
+ response = post("/#{Validic.api_version}/organizations/#{organization_id}/users.json", options)
46
+ response if response
47
+ end
48
+
49
+ ##
50
+ #
51
+ # PUT request for suspending a user
52
+ #
53
+ # @params[:organization_id] -- String
54
+ # @params[:access_token] -- String -- organization's access_token
55
+ # @params[:user_id] -- String -- user's ID to suspend
56
+ # @params[:suspend] -- Boolean -- (1/0)
57
+ #
58
+ # @return user object
59
+ def user_suspend(options={})
60
+ organization_id = options[:organization_id]
61
+ user_id = options[:user_id]
62
+ options = {
63
+ suspend: options[:suspend],
64
+ access_token: options[:access_token]
65
+ }
66
+
67
+ response = put("/#{Validic.api_version}/organizations/#{organization_id}/users/#{user_id}.json", options)
68
+ response
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,3 @@
1
+ module Validic
2
+ VERSION = "0.2.1"
3
+ end
@@ -0,0 +1,74 @@
1
+ # encoding: utf-8
2
+
3
+ module Validic
4
+ module Weight
5
+
6
+ ##
7
+ # Get Weight 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 for date range beyond yesterday
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 Weight
20
+ def get_weights(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}/weight.json", options)
33
+ elsif user_id
34
+ response = get("/#{Validic.api_version}/users/#{user_id}/weight.json", options)
35
+ else
36
+ response = get("/#{Validic.api_version}/weight.json", options)
37
+ end
38
+ end
39
+
40
+ ##
41
+ # Create Weight base on `access_token` and `authentication_token`
42
+ #
43
+ # @params :access_token - *required if not specified on your initializer / organization access_token
44
+ # @params :authentication_token - *required / authentication_token of a specific user
45
+ #
46
+ # @params :timestamp
47
+ # @params :weight
48
+ # @params :bmi
49
+ # @params :fat_percent
50
+ # @params :mass_weight
51
+ # @params :free_mass
52
+ # @params :source
53
+ #
54
+ # @return success
55
+ def create_weight(options={})
56
+ options = {
57
+ access_token: options[:access_token],
58
+ weight: {
59
+ timestamp: options[:timestamp],
60
+ weight: options[:weight],
61
+ bmi: options[:bmi],
62
+ fat_percent: options[:fat_percent],
63
+ mass_weight: options[:mass_weight],
64
+ free_mass: options[:free_mass],
65
+ source: options[:source]
66
+ }
67
+ }
68
+
69
+ response = post("/#{Validic.api_version}/weight.json", options)
70
+ response if response
71
+ end
72
+
73
+ end
74
+ end
data/spec/.DS_Store ADDED
Binary file
@@ -0,0 +1,43 @@
1
+ require 'validic'
2
+ require 'vcr'
3
+ require 'simplecov'
4
+ require 'simplecov-rcov'
5
+ require 'api_matchers'
6
+
7
+ class SimpleCov::Formatter::MergedFormatter
8
+ def format(result)
9
+ SimpleCov::Formatter::HTMLFormatter.new.format(result)
10
+ SimpleCov::Formatter::RcovFormatter.new.format(result)
11
+ end
12
+ end
13
+
14
+ SimpleCov.formatter = SimpleCov::Formatter::MergedFormatter
15
+ SimpleCov.start do
16
+ add_filter '/vendor'
17
+ end
18
+
19
+ VCR.configure do |c|
20
+ c.allow_http_connections_when_no_cassette = true
21
+ c.cassette_library_dir = 'spec/cassette'
22
+ c.hook_into :webmock
23
+ c.configure_rspec_metadata!
24
+ c.default_cassette_options = { record: :new_episodes }
25
+ end
26
+
27
+ RSpec.configure do |c|
28
+ c.include APIMatchers::RSpecMatchers
29
+
30
+ c.treat_symbols_as_metadata_keys_with_true_values = true
31
+
32
+ ##
33
+ # Add gem specific configuration for easy access
34
+ #
35
+ c.before(:each) do
36
+ Validic.configure do |config|
37
+ # config.api_url = 'https://api.validic.com'
38
+ config.api_url = 'http://api.validic.dev' #development config
39
+ config.api_version = 'v1'
40
+ config.access_token = '9c03ad2bcb022425944e4686d398ef8398f537c2f7c113495ffa7bc9cfa49286'
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,97 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Validic::Activity do
5
+
6
+ let(:client) { Validic::Client.new }
7
+
8
+ context "#get_activities" do
9
+ before do
10
+ @activities_response = client.get_activities({})
11
+ end
12
+
13
+ it "returns JSON response of Validic::Activity", vcr: true do
14
+ @activities_response.should_not be_nil
15
+ end
16
+
17
+ it "status 200" do
18
+ @activities_response.summary.status.should == 200
19
+ end
20
+
21
+ it "has summary node" do
22
+ @activities_response.summary.should_not be_nil
23
+ end
24
+ end
25
+
26
+ context "#get_activities via organization" do
27
+ before do
28
+ @activities_response = client.get_activities({organization_id: "519e24e16a7e0cc7ef00002b", access_token: "ENTERPRISE_KEY"})
29
+ end
30
+
31
+ it "returns JSON response of Validic::Activity", vcr: true do
32
+ @activities_response.should_not be_nil
33
+ end
34
+
35
+ it "status 200" do
36
+ @activities_response.summary.status.should == 200
37
+ end
38
+
39
+ it "has summary node" do
40
+ @activities_response.summary.should_not be_nil
41
+ end
42
+ end
43
+
44
+ context "#get_activities of a user" do
45
+ before do
46
+ @activities_response = client.get_activities({user_id: "519e24e16a7e0cc7ef00002c"})
47
+ end
48
+
49
+ it "returns JSON response of Validic::Activity", vcr: true do
50
+ @activities_response.should_not be_nil
51
+ end
52
+
53
+ it "status 200" do
54
+ @activities_response.summary.status.should == 200
55
+ end
56
+
57
+ it "has summary node" do
58
+ @activities_response.summary.should_not be_nil
59
+ end
60
+ end
61
+
62
+ context "#get_latest_activities of a user base on activity_type" do
63
+ before do
64
+ @latest_activities_response = client.get_latest_activities(user_id: "519e24e16a7e0cc7ef00002c", access_token: "9c03ad2bcb022425944e4686d398ef8398f537c2f7c113495ffa7bc9cfa49286", activity_type: "routine")
65
+ end
66
+
67
+ it "returns JSON response of Validic::Activity", vcr: true do
68
+ @latest_activities_response.should_not be_nil
69
+ end
70
+
71
+ it "status 200" do
72
+ @latest_activities_response.summary.status.should == 200
73
+ end
74
+
75
+ it "has summary node" do
76
+ @latest_activities_response.summary.should_not be_nil
77
+ end
78
+ end
79
+
80
+ context "#get_latest_activities of an organization base on activity_type" do
81
+ before do
82
+ @latest_activities_response = client.get_latest_activities(organization_id: "519e24e16a7e0cc7ef00002b", activity_type: "routine", access_token: "296a9c1d73c1b40af4c8e643336cb25524caf2a7679ba92c192855160572fdb1")
83
+ end
84
+
85
+ it "returns JSON response of Validic::Activity", vcr: true do
86
+ @latest_activities_response.should_not be_nil
87
+ end
88
+
89
+ it "status 200" do
90
+ @latest_activities_response.summary.status.should == 200
91
+ end
92
+
93
+ it "has summary node" do
94
+ @latest_activities_response.summary.should_not be_nil
95
+ end
96
+ end
97
+ end