business_insight_api_client 0.2.0 → 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.
- checksums.yaml +4 -4
- data/lib/business_insight_api_client/api/animals.rb +1 -1
- data/lib/business_insight_api_client/api/applications.rb +10 -10
- data/lib/business_insight_api_client/api/groups.rb +1 -0
- data/lib/business_insight_api_client/client.rb +5 -5
- data/lib/business_insight_api_client/helpers/authorization.rb +5 -5
- data/lib/business_insight_api_client/helpers/restclient.rb +40 -19
- data/lib/business_insight_api_client/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef59f6b6787285076c903e5cee6acd0df94db21e
|
4
|
+
data.tar.gz: ac7856f65e8f8384cfaed30f7ac4f82a375caa14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e326364678b9f2ad71258e7479c449c7f3cf50cb62fed8e451e08674f2d5e73bcc69ef9caab324a55940fb31eda9ab19c168b6e5f489291bc772ea9d0b7d6a2d
|
7
|
+
data.tar.gz: 1faacecb237f6d43c354977af171fade6a3aaf2e0442ce821ee4d472df31d2b8813eb085374584c4827681a516442295f62956c7b282695e25d136036d103e69
|
@@ -60,7 +60,7 @@ module BusinessInsightApiClient
|
|
60
60
|
# @param [Hash] animal animal to be updated. See docs for parameters.
|
61
61
|
# @return [BusinessInsightApiClient::Mash] response mash.
|
62
62
|
# @see https://api.nedap-bi.com/api/docs/
|
63
|
-
def update_animal(animal_id,animal={})
|
63
|
+
def update_animal(animal_id, animal={})
|
64
64
|
::BusinessInsightApiClient::Mash.from_json client.put("/animals/#{animal_id}", animal.to_json)
|
65
65
|
end
|
66
66
|
|
@@ -21,16 +21,16 @@ module BusinessInsightApiClient
|
|
21
21
|
tokens = ::BusinessInsightApiClient::Mash.from_json client.get('/applications/access_tokens', header: client_credential_token.headers)
|
22
22
|
expired_time = Time.now
|
23
23
|
Hash[tokens.access_tokens.collect do |token|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
24
|
+
[
|
25
|
+
token.resource_owner_id,
|
26
|
+
authorization.access_token_from_hash(
|
27
|
+
token: token.token,
|
28
|
+
expires_in: token.expires_in_seconds,
|
29
|
+
expires_at: Time.now.to_i + token.expires_in_seconds,
|
30
|
+
refresh_token: token.refresh_token
|
31
|
+
)
|
32
|
+
]
|
33
|
+
end]
|
34
34
|
|
35
35
|
end
|
36
36
|
|
@@ -39,11 +39,11 @@ module BusinessInsightApiClient
|
|
39
39
|
# @option options [String] :client_secret (BusinessInsightApiClient.client_secret) the client secret uses in OAuth authorization.
|
40
40
|
def initialize(options = {})
|
41
41
|
@options = options
|
42
|
-
@options[:api_url]
|
43
|
-
@options[:authorization_url]
|
44
|
-
@options[:content_type]
|
45
|
-
@options[:client_id]
|
46
|
-
@options[:client_secret]
|
42
|
+
@options[:api_url] ||= BusinessInsightApiClient.api_url
|
43
|
+
@options[:authorization_url] ||= BusinessInsightApiClient.authorization_url
|
44
|
+
@options[:content_type] ||= BusinessInsightApiClient.default_content_type
|
45
|
+
@options[:client_id] ||= BusinessInsightApiClient.client_id
|
46
|
+
@options[:client_secret] ||= BusinessInsightApiClient.client_secret
|
47
47
|
end
|
48
48
|
|
49
49
|
# Creates new or returns an existing Authorization helper.
|
@@ -6,9 +6,9 @@ module BusinessInsightApiClient
|
|
6
6
|
class Authorization
|
7
7
|
|
8
8
|
DEFAULT_OPTIONS = {
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
authorization_url: 'https://nedap-bi.com',
|
10
|
+
client_id: '',
|
11
|
+
client_secret: ''
|
12
12
|
}
|
13
13
|
|
14
14
|
|
@@ -65,8 +65,8 @@ module BusinessInsightApiClient
|
|
65
65
|
# @param [Hash] params additional params
|
66
66
|
# @option params [String] :redirect_uri the redirect uri to which the client has to be redirected to.
|
67
67
|
# @param [Hash] options options
|
68
|
-
def auth_code_token_from_access_grant(access_grant, params={},options={})
|
69
|
-
oauth_client.auth_code.get_token(access_grant,params,options)
|
68
|
+
def auth_code_token_from_access_grant(access_grant, params={}, options={})
|
69
|
+
oauth_client.auth_code.get_token(access_grant, params, options)
|
70
70
|
end
|
71
71
|
|
72
72
|
|
@@ -10,8 +10,8 @@ module BusinessInsightApiClient
|
|
10
10
|
include HTTPClient::Util
|
11
11
|
|
12
12
|
DEFAULT_OPTIONS = {
|
13
|
-
|
14
|
-
|
13
|
+
api_url: 'https://api.nedap-bi.com',
|
14
|
+
default_content_type: 'application/json',
|
15
15
|
}
|
16
16
|
|
17
17
|
API_VERSION_PATH = '/v1'
|
@@ -40,39 +40,60 @@ module BusinessInsightApiClient
|
|
40
40
|
def get(path, *args, &block)
|
41
41
|
build_path(path)
|
42
42
|
begin
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
execute do
|
44
|
+
arguments = argument_to_hash(args, :query, :body, :header, :follow_redirect) || {}
|
45
|
+
arguments[:header] = access_token_header.merge(arguments[:header] || {})
|
46
|
+
client.request(:get, @base_uri.to_s, arguments, &block)
|
47
|
+
end
|
46
48
|
rescue HTTPClient::TimeoutError
|
47
49
|
raise ::BusinessInsightApiClient::Errors::RequestTimedOutError
|
48
50
|
end
|
49
|
-
|
50
|
-
response.body
|
51
|
+
|
51
52
|
end
|
52
53
|
|
53
54
|
def put(path, body = '')
|
54
55
|
build_path(path)
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
execute do
|
57
|
+
client.put(@base_uri.to_s, body: body, header: { 'Content-Type' => content_type, 'Accept' => content_type }.merge(access_token_header))
|
58
|
+
end
|
58
59
|
end
|
59
60
|
|
60
61
|
def post(path, body = '')
|
61
62
|
build_path(path)
|
62
|
-
|
63
|
-
|
64
|
-
|
63
|
+
execute do
|
64
|
+
client.post(@base_uri.to_s, body: body, header: { 'Content-Type' => content_type, 'Accept' => content_type }.merge(access_token_header))
|
65
|
+
end
|
65
66
|
end
|
66
67
|
|
67
68
|
def delete(path)
|
68
69
|
build_path(path)
|
69
|
-
|
70
|
-
|
71
|
-
|
70
|
+
execute do
|
71
|
+
client.delete(@base_uri.to_s, header: access_token_header)
|
72
|
+
end
|
72
73
|
end
|
73
74
|
|
74
75
|
private
|
75
76
|
|
77
|
+
# Executes an request and retries when an token could be expired.
|
78
|
+
# It refreshes the token before retrying.
|
79
|
+
#
|
80
|
+
# @return [String] the response.
|
81
|
+
# @raise [::BusinessInsightApiClient::Errors] on request errors.
|
82
|
+
def execute
|
83
|
+
retries ||= 1
|
84
|
+
response = yield
|
85
|
+
raise_on_response_errors(response)
|
86
|
+
rescue ::BusinessInsightApiClient::Errors::UnauthorizedError => e
|
87
|
+
if (retries -= 1) >= 0
|
88
|
+
authorization.current_token = authorization.current_token.refresh!
|
89
|
+
retry
|
90
|
+
else
|
91
|
+
raise
|
92
|
+
end
|
93
|
+
else
|
94
|
+
response.body
|
95
|
+
end
|
96
|
+
|
76
97
|
def access_token_header
|
77
98
|
authorization.current_token_headers
|
78
99
|
end
|
@@ -85,14 +106,14 @@ module BusinessInsightApiClient
|
|
85
106
|
@client ||= HTTPClient.new
|
86
107
|
end
|
87
108
|
|
88
|
-
def
|
109
|
+
def raise_on_response_errors(response)
|
89
110
|
case response.status
|
90
111
|
when 400
|
91
112
|
response_body = BusinessInsightApiClient::Mash.from_json(response.body)
|
92
113
|
raise ::BusinessInsightApiClient::Errors::BadRequestError.new(response.status, response_body), "(#{response.status}): #{[*response_body.messages].join(', ')}"
|
93
114
|
when 401
|
94
115
|
response_body = BusinessInsightApiClient::Mash.from_json(response.body)
|
95
|
-
raise ::BusinessInsightApiClient::Errors::UnauthorizedError.new(response.status,response_body),"(#{response.status}): #{[*response_body.messages].join(', ')}"
|
116
|
+
raise ::BusinessInsightApiClient::Errors::UnauthorizedError.new(response.status, response_body), "(#{response.status}): #{[*response_body.messages].join(', ')}"
|
96
117
|
when 403
|
97
118
|
response_body = BusinessInsightApiClient::Mash.from_json(response.body)
|
98
119
|
raise ::BusinessInsightApiClient::Errors::ForbiddenError.new(response.status, response_body), "(#{response.status}): #{[*response_body.messages].join(', ')}"
|
@@ -102,7 +123,7 @@ module BusinessInsightApiClient
|
|
102
123
|
when 500
|
103
124
|
raise ::BusinessInsightApiClient::Errors::InternalError.new(response.status, response.reason), "#{response.code} : #{response.reason}"
|
104
125
|
when 501..503
|
105
|
-
raise ::BusinessInsightApiClient::Errors::UnavailableError.new(response.status, response.reason),"#{response.code} : #{response.reason}"
|
126
|
+
raise ::BusinessInsightApiClient::Errors::UnavailableError.new(response.status, response.reason), "#{response.code} : #{response.reason}"
|
106
127
|
end
|
107
128
|
end
|
108
129
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: business_insight_api_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nedap
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|