health_hero-human_api 0.2.1 → 0.3.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.
- checksums.yaml +4 -4
- data/lib/{human_api.rb → health_hero-human_api.rb} +0 -0
- data/lib/human_api/app.rb +14 -0
- data/lib/human_api/human.rb +50 -42
- data/lib/human_api/version.rb +1 -1
- data/spec/cassettes/delete_human_success.yml +34 -0
- data/spec/lib/human_api/app_spec.rb +8 -0
- data/spec/lib/human_api/human_spec.rb +17 -0
- data/spec/spec_helper.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d50a9ef5b31d0b1c21333d5d798e5e3417c1bf8
|
4
|
+
data.tar.gz: fe81ba970d44246934e1b6eb0c4eebe80b72ec46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1648e75d59ee2627096946e8425d9bb9f47d01bcc86e72bd4863d736f020feb982ae02082a5ec133500e3005100d54ebb7378ee25372b1e4854a491dcc68ff3
|
7
|
+
data.tar.gz: 9eb63fb6bd3ede1c83adf38177bbe8c841573d1bf3b9c95b7914021f3f08bfed7057b31dab200392ff6b08d59d32abecc9c86c836a62245c2459f6c3828099dd
|
File without changes
|
data/lib/human_api/app.rb
CHANGED
@@ -36,5 +36,19 @@ module HumanApi
|
|
36
36
|
false
|
37
37
|
end
|
38
38
|
end
|
39
|
+
|
40
|
+
# Delete a new human:
|
41
|
+
def self.delete_human(id)
|
42
|
+
response = delete "users/#{id}"
|
43
|
+
|
44
|
+
response.status >= 200 && response.status < 300
|
45
|
+
rescue Nestful::UnauthorizedAccess => e
|
46
|
+
if HumanApi.config.handle_access_error
|
47
|
+
HumanApi.config.handle_access_error.call e
|
48
|
+
else
|
49
|
+
raise if HumanApi.config.raise_access_errors
|
50
|
+
false
|
51
|
+
end
|
52
|
+
end
|
39
53
|
end
|
40
54
|
end
|
data/lib/human_api/human.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module HumanApi
|
2
2
|
class Human < Nestful::Resource
|
3
3
|
|
4
|
+
attr_accessor :params, :success, :results, :options, :total_size, :next_page_link
|
4
5
|
attr_reader :token
|
5
6
|
|
6
7
|
endpoint 'https://api.humanapi.co'
|
@@ -13,7 +14,9 @@ module HumanApi
|
|
13
14
|
}.freeze
|
14
15
|
|
15
16
|
def initialize(options)
|
16
|
-
@token
|
17
|
+
@token = options[:access_token]
|
18
|
+
@success = true
|
19
|
+
@results = []
|
17
20
|
super
|
18
21
|
end
|
19
22
|
|
@@ -37,71 +40,76 @@ module HumanApi
|
|
37
40
|
# =============================================
|
38
41
|
|
39
42
|
def query(method, options = {})
|
43
|
+
options.symbolize_keys!
|
44
|
+
@options = options
|
45
|
+
|
40
46
|
unless AVAILABLE_METHODS.include? method.to_sym
|
41
47
|
raise ArgumentError, "The method '#{method}' does not exist!"
|
42
48
|
end
|
43
49
|
|
44
|
-
# From sym to string
|
45
50
|
method = method.to_s
|
51
|
+
url = "#{method}"
|
46
52
|
|
47
|
-
# The base of the url
|
48
|
-
url = "#{method}"
|
49
|
-
|
50
|
-
# If it is a singular word prepare for readings
|
51
53
|
if method.is_singular?
|
52
|
-
if options[:readings] == true
|
53
|
-
url += "/readings"
|
54
|
-
end
|
54
|
+
url += "/readings" if options[:readings] == true
|
55
55
|
else
|
56
|
-
if options[:summary]
|
57
|
-
|
58
|
-
end
|
56
|
+
url += "/summary" if options[:summary] == true
|
57
|
+
url +- "/summaries" if options[:summaries] == true
|
59
58
|
end
|
60
59
|
|
61
|
-
# You passed a date
|
62
60
|
if options[:date].present?
|
63
|
-
# Make a request for a specific date
|
64
61
|
url += "/daily/#{options[:date]}"
|
65
|
-
# If you passed an id
|
66
62
|
elsif options[:id].present?
|
67
|
-
# Make a request for a single
|
68
63
|
url += "/#{options[:id]}"
|
69
64
|
end
|
70
65
|
|
71
|
-
params = {access_token: token}
|
66
|
+
@params = {access_token: token}
|
67
|
+
@params.merge!(start_date: options[:start_date]) if options[:start_date].present?
|
68
|
+
@params.merge!(end_date: options[:end_date]) if options[:end_date].present?
|
72
69
|
|
73
70
|
if options[:fetch_all]
|
74
|
-
|
75
|
-
first_request = get url, params
|
76
|
-
total_size = first_request.headers['x-total-count'].to_i
|
77
|
-
results = results + JSON.parse(first_request.body)
|
78
|
-
next_page_link = first_request.headers['link'].match(/<(https[^>]*)>/)[1]
|
79
|
-
|
71
|
+
fetch_page url
|
80
72
|
while results.count < total_size
|
81
|
-
|
82
|
-
next_page_link = next_page.headers['link'].match(/<(https[^>]*)>/)[1]
|
83
|
-
results = results + JSON.parse(next_page.body)
|
73
|
+
fetch_page
|
84
74
|
end
|
85
75
|
|
86
|
-
results
|
76
|
+
options[:handle_data] ? @success : results
|
87
77
|
else
|
88
|
-
params.merge!(limit: options[:limit]) if options[:limit].present?
|
89
|
-
params.merge!(offset: options[:offset]) if options[:offset].present?
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
78
|
+
@params.merge!(limit: options[:limit]) if options[:limit].present?
|
79
|
+
@params.merge!(offset: options[:offset]) if options[:offset].present?
|
80
|
+
result = fetch_page url
|
81
|
+
options[:return_metadata] ? result : JSON.parse(result.body)
|
82
|
+
end
|
83
|
+
rescue Nestful::UnauthorizedAccess => e
|
84
|
+
if HumanApi.config.handle_access_error
|
85
|
+
HumanApi.config.handle_access_error.call e
|
86
|
+
else
|
87
|
+
raise if HumanApi.config.raise_access_errors
|
88
|
+
false
|
97
89
|
end
|
98
90
|
end
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
def fetch_page(url=nil)
|
95
|
+
if url
|
96
|
+
page = get url, params
|
97
|
+
@total_size = page.headers['x-total-count'].to_i
|
98
|
+
else
|
99
|
+
page = Nestful.get next_page_link
|
100
|
+
end
|
101
|
+
|
102
|
+
@next_page_link = page.headers['link'].match(/<(https[^>]*)>/)[1] if page.headers['link']
|
103
|
+
|
104
|
+
if options[:handle_data]
|
105
|
+
JSON.parse(page.body).each do |data|
|
106
|
+
@success = false unless options[:handle_data].call data
|
107
|
+
@results << '*'
|
108
|
+
end
|
109
|
+
else
|
110
|
+
@results = @results + JSON.parse(page.body) if options[:fetch_all]
|
111
|
+
page
|
112
|
+
end
|
105
113
|
end
|
106
114
|
end
|
107
115
|
end
|
data/lib/human_api/version.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: delete
|
5
|
+
uri: https://APP_ID:@api.humanapi.co/v1/apps/CLIENT_ID/users/test_user
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 204
|
19
|
+
message: No Content
|
20
|
+
headers:
|
21
|
+
Date:
|
22
|
+
- Wed, 02 Sep 2015 17:11:30 GMT
|
23
|
+
Server:
|
24
|
+
- nginx/1.4.6 (Ubuntu)
|
25
|
+
X-Powered-By:
|
26
|
+
- Express
|
27
|
+
Connection:
|
28
|
+
- keep-alive
|
29
|
+
body:
|
30
|
+
encoding: UTF-8
|
31
|
+
string: ''
|
32
|
+
http_version:
|
33
|
+
recorded_at: Wed, 02 Sep 2015 17:07:27 GMT
|
34
|
+
recorded_with: VCR 2.9.3
|
@@ -63,4 +63,12 @@ describe HumanApi::App do
|
|
63
63
|
xit '.. need to think of a way to make this fail :p'
|
64
64
|
end
|
65
65
|
end
|
66
|
+
|
67
|
+
describe ".delete_human" do
|
68
|
+
it "returns true when all is well" do
|
69
|
+
VCR.use_cassette :delete_human_success do
|
70
|
+
expect(app.delete_human 'test_user').to eq true
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
66
74
|
end
|
@@ -102,6 +102,23 @@ describe HumanApi::Human do
|
|
102
102
|
it 'goes crazy and gets them all' do
|
103
103
|
expect(response.count).to eq 234
|
104
104
|
end
|
105
|
+
|
106
|
+
context "with a callback" do
|
107
|
+
let(:context) { '_fetch_all' }
|
108
|
+
let(:foo) { double 'Nothing' }
|
109
|
+
let(:options) { {fetch_all: true, handle_data: ->data { foo.do_stuff data['id'] }} }
|
110
|
+
|
111
|
+
it 'calls the callback on them all' do
|
112
|
+
expect(foo).to receive(:do_stuff).exactly(234).times.and_return true
|
113
|
+
expect(response).to be true
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'returns false if one errors' do
|
117
|
+
expect(foo).to receive(:do_stuff).exactly(:once).and_return false
|
118
|
+
expect(foo).to receive(:do_stuff).exactly(233).times.and_return true
|
119
|
+
expect(response).to be false
|
120
|
+
end
|
121
|
+
end
|
105
122
|
end
|
106
123
|
end
|
107
124
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: health_hero-human_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Aiken
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nestful
|
@@ -165,13 +165,14 @@ files:
|
|
165
165
|
- Rakefile
|
166
166
|
- human_api.gemspec
|
167
167
|
- lib/config/initializers/core_ext.rb
|
168
|
-
- lib/human_api.rb
|
168
|
+
- lib/health_hero-human_api.rb
|
169
169
|
- lib/human_api/app.rb
|
170
170
|
- lib/human_api/config.rb
|
171
171
|
- lib/human_api/human.rb
|
172
172
|
- lib/human_api/user.rb
|
173
173
|
- lib/human_api/version.rb
|
174
174
|
- spec/cassettes/create_human_success.yml
|
175
|
+
- spec/cassettes/delete_human_success.yml
|
175
176
|
- spec/cassettes/get_activities.yml
|
176
177
|
- spec/cassettes/get_activities_a_few.yml
|
177
178
|
- spec/cassettes/get_activities_fetch_all.yml
|
@@ -210,6 +211,7 @@ specification_version: 4
|
|
210
211
|
summary: API client for HumanAPI
|
211
212
|
test_files:
|
212
213
|
- spec/cassettes/create_human_success.yml
|
214
|
+
- spec/cassettes/delete_human_success.yml
|
213
215
|
- spec/cassettes/get_activities.yml
|
214
216
|
- spec/cassettes/get_activities_a_few.yml
|
215
217
|
- spec/cassettes/get_activities_fetch_all.yml
|