domoscio_rails 0.2.24 → 0.3.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/domoscio_rails.rb +35 -32
- data/lib/domoscio_rails/adaptative/predictive/objective_knowledge_node_student.rb +1 -2
- data/lib/domoscio_rails/authorization_token.rb +1 -4
- data/lib/domoscio_rails/errors.rb +14 -13
- data/lib/domoscio_rails/resource.rb +1 -4
- data/lib/domoscio_rails/version.rb +2 -2
- metadata +3 -4
- data/lib/tasks/domoscio_rails_tasks.rake +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b1afdf503120aeb74bb9d38237a533f7becd888b329098199446db697b9fe26
|
4
|
+
data.tar.gz: bda6a20da9b44d4ef8a32910688ec633606168f012b7d6af4047854d7e443a0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d350f60cbbb55a8e5a8222edac01778216c3e3db07c645b3212c849ab41dc670eb1d79f9d31ff8256a0f5d702934af3043cf368fb9635bc206d44e2023ba50bb
|
7
|
+
data.tar.gz: 388c1db2de8db63dfccea4335a0c8542615725408501283293aa537282a8d5ed4e285231f4d3ed45dae603cde678ebef80fb6ad356cc4bf1857dff1c3a4e67a8
|
data/lib/domoscio_rails.rb
CHANGED
@@ -2,13 +2,11 @@
|
|
2
2
|
require 'net/https'
|
3
3
|
require 'cgi/util'
|
4
4
|
require 'multi_json'
|
5
|
-
|
6
5
|
# helpers
|
7
6
|
require 'domoscio_rails/version'
|
8
7
|
require 'domoscio_rails/json'
|
9
8
|
require 'domoscio_rails/errors'
|
10
9
|
require 'domoscio_rails/authorization_token'
|
11
|
-
|
12
10
|
# resources
|
13
11
|
require 'domoscio_rails/http_calls'
|
14
12
|
require 'domoscio_rails/resource'
|
@@ -41,9 +39,7 @@ require 'domoscio_rails/utils/gameplay_util'
|
|
41
39
|
require 'domoscio_rails/utils/alerts_util'
|
42
40
|
require 'domoscio_rails/utils/recommendation_util'
|
43
41
|
require 'domoscio_rails/metadata/delta_object'
|
44
|
-
|
45
42
|
module DomoscioRails
|
46
|
-
|
47
43
|
class Configuration
|
48
44
|
attr_accessor :preproduction, :test, :dev, :root_url, :client_id, :client_passphrase, :temp_dir, :disabled, :version
|
49
45
|
|
@@ -109,46 +105,54 @@ module DomoscioRails
|
|
109
105
|
return false if @disabled
|
110
106
|
uri = api_uri(url)
|
111
107
|
uri.query = URI.encode_www_form(filters) unless filters.empty?
|
112
|
-
|
113
108
|
res = DomoscioRails.send_request(uri, method, params, headers, before_request_proc)
|
114
|
-
|
115
|
-
# decode json data
|
109
|
+
return res if res.kind_of? DomoscioRails::ProcessingError
|
116
110
|
begin
|
117
|
-
|
118
|
-
|
119
|
-
|
111
|
+
unless res.kind_of? Net::HTTPSuccess
|
112
|
+
data = DomoscioRails::JSON.load((res.body.nil? ? '' : res.body), :symbolize_keys => true)
|
113
|
+
raise ResponseError.new(uri, res.code.to_i, data, res.body)
|
120
114
|
end
|
121
|
-
|
122
|
-
|
115
|
+
data = DomoscioRails::JSON.load(res.body.nil? ? '' : res.body)
|
116
|
+
DomoscioRails::AuthorizationToken::Manager.storage.store({access_token: res['Accesstoken'], refresh_token: res['Refreshtoken']})
|
117
|
+
rescue MultiJson::LoadError => exception
|
118
|
+
data = ProcessingError.new(uri, 500, exception, res.body)
|
119
|
+
rescue ResponseError => exception
|
120
|
+
data = exception
|
123
121
|
end
|
124
122
|
|
125
123
|
if res['Total'] && !filters[:page]
|
126
124
|
pagetotal = (res['Total'].to_i / res['Per-Page'].to_f).ceil
|
127
|
-
|
128
125
|
for j in 2..pagetotal
|
129
|
-
|
130
|
-
res
|
131
|
-
|
132
|
-
# decode json data
|
126
|
+
res = DomoscioRails.send_request(uri, method, params.merge({page: j}), headers, before_request_proc)
|
127
|
+
return res if res.kind_of? DomoscioRails::ProcessingError
|
133
128
|
begin
|
134
|
-
|
129
|
+
unless res.kind_of? Net::HTTPSuccess
|
130
|
+
body = DomoscioRails::JSON.load((res.body.nil? ? '' : res.body), :symbolize_keys => true)
|
131
|
+
raise ResponseError.new(uri, res.code.to_i, body, res.body)
|
132
|
+
end
|
133
|
+
body = DomoscioRails::JSON.load(res.body.nil? ? '' : res.body)
|
134
|
+
data += body
|
135
135
|
data.flatten!
|
136
|
-
rescue MultiJson::LoadError
|
137
|
-
|
136
|
+
rescue MultiJson::LoadError => exception
|
137
|
+
return ProcessingError.new(uri, 500, exception, res.body)
|
138
|
+
rescue ResponseError => exception
|
139
|
+
return exception
|
138
140
|
end
|
139
|
-
|
140
141
|
end
|
141
142
|
end
|
142
143
|
data
|
143
144
|
end
|
144
145
|
|
145
|
-
|
146
146
|
def self.send_request(uri, method, params, headers, before_request_proc)
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
147
|
+
begin
|
148
|
+
res = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
|
149
|
+
req = Net::HTTP::const_get(method.capitalize).new(uri.request_uri, headers)
|
150
|
+
req.body = DomoscioRails::JSON.dump(params)
|
151
|
+
before_request_proc.call(req) if before_request_proc
|
152
|
+
http.request req
|
153
|
+
end
|
154
|
+
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNREFUSED, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => exception
|
155
|
+
ProcessingError.new(uri, 500, exception, res.body)
|
152
156
|
end
|
153
157
|
end
|
154
158
|
|
@@ -156,7 +160,6 @@ module DomoscioRails
|
|
156
160
|
|
157
161
|
def self.user_agent
|
158
162
|
@uname ||= get_uname
|
159
|
-
|
160
163
|
{
|
161
164
|
bindings_version: DomoscioRails::VERSION,
|
162
165
|
lang: 'ruby',
|
@@ -177,18 +180,18 @@ module DomoscioRails
|
|
177
180
|
|
178
181
|
if !auth_token.is_a? String
|
179
182
|
headers = {
|
180
|
-
'user_agent' => "
|
183
|
+
'user_agent' => "#{DomoscioRails.user_agent}",
|
181
184
|
'AccessToken' => "#{auth_token[:access_token]}",
|
182
185
|
'RefreshToken' => "#{auth_token[:refresh_token]}",
|
183
186
|
'Content-Type' => 'application/json'
|
184
187
|
}
|
185
188
|
else
|
186
189
|
headers = {
|
187
|
-
'user_agent' => "
|
188
|
-
'Authorization' => "Token token=#{DomoscioRails.configuration.client_passphrase}"
|
190
|
+
'user_agent' => "#{DomoscioRails.user_agent}",
|
191
|
+
'Authorization' => "Token token=#{DomoscioRails.configuration.client_passphrase}",
|
189
192
|
'Content-Type' => 'application/json'
|
190
193
|
}
|
191
194
|
end
|
192
195
|
headers
|
193
196
|
end
|
194
|
-
end
|
197
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module DomoscioRails
|
2
2
|
module AuthorizationToken
|
3
|
-
|
4
3
|
class Manager
|
5
|
-
|
6
4
|
class << self
|
7
5
|
def storage
|
8
6
|
@@storage ||= FileStorage.new
|
@@ -19,7 +17,6 @@ module DomoscioRails
|
|
19
17
|
end
|
20
18
|
end
|
21
19
|
end
|
22
|
-
|
23
20
|
class StaticStorage
|
24
21
|
def get
|
25
22
|
@@token ||= nil
|
@@ -63,7 +60,7 @@ module DomoscioRails
|
|
63
60
|
end
|
64
61
|
|
65
62
|
def file_path
|
66
|
-
@temp_dir = DomoscioRails.configuration.temp_dir
|
63
|
+
@temp_dir = DomoscioRails.configuration.temp_dir
|
67
64
|
File.join(@temp_dir, "DomoscioRails.AuthorizationToken.FileStore.tmp")
|
68
65
|
end
|
69
66
|
end
|
@@ -1,24 +1,25 @@
|
|
1
1
|
module DomoscioRails
|
2
|
-
|
3
2
|
# Generic error superclass for MangoPay specific errors.
|
4
|
-
# Currently never instantiated directly.
|
5
|
-
# Currently only single subclass used.
|
6
3
|
class Error < StandardError
|
7
4
|
end
|
8
5
|
|
9
|
-
#
|
10
|
-
# it returns response with HTTP code != 200.
|
6
|
+
# Error Message from AdaptiveEngine
|
11
7
|
class ResponseError < Error
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
def initialize(request_url, code, details)
|
16
|
-
@request_url, @code, @details = request_url, code, details
|
8
|
+
attr_reader :request_url, :code, :details, :body
|
9
|
+
def initialize(request_url, code, details, body)
|
10
|
+
@request_url, @code, @details, @body = request_url, code, details, body
|
17
11
|
super(message) if message
|
18
12
|
end
|
13
|
+
def message; @details.dig(:error, :message) || @details; end
|
14
|
+
end
|
19
15
|
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
# Error Message from DomoscioRails
|
17
|
+
class ProcessingError < Error
|
18
|
+
attr_reader :request_url, :code, :details, :body
|
19
|
+
def initialize(request_url, code, details, body)
|
20
|
+
@request_url, @code, @details, @body = request_url, code, details, body
|
21
|
+
super(message) if message
|
22
|
+
end
|
23
|
+
def message; @details.message; end
|
23
24
|
end
|
24
25
|
end
|
@@ -1,16 +1,13 @@
|
|
1
1
|
module DomoscioRails
|
2
|
-
# @abstract
|
3
2
|
class Resource
|
4
3
|
class << self
|
5
4
|
def class_name
|
6
5
|
name.split('::')[-1]
|
7
6
|
end
|
8
|
-
|
9
7
|
def url(id = nil, util_name = nil, on_self = nil )
|
10
8
|
if self == Resource
|
11
9
|
raise NotImplementedError.new('Resource is an abstract class. Do not use it directly.')
|
12
10
|
end
|
13
|
-
|
14
11
|
build_url = "/v#{DomoscioRails.configuration.version}/instances/#{DomoscioRails.configuration.client_id}"
|
15
12
|
if !on_self
|
16
13
|
build_url << "/#{class_name.underscore}s"
|
@@ -25,4 +22,4 @@ module DomoscioRails
|
|
25
22
|
end
|
26
23
|
end
|
27
24
|
end
|
28
|
-
end
|
25
|
+
end
|
@@ -1,3 +1,3 @@
|
|
1
1
|
module DomoscioRails
|
2
|
-
VERSION = "0.
|
3
|
-
end
|
2
|
+
VERSION = "0.3.1"
|
3
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: domoscio_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benoit Praly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -73,7 +73,6 @@ files:
|
|
73
73
|
- lib/domoscio_rails/utils/recommendation_util.rb
|
74
74
|
- lib/domoscio_rails/utils/review_util.rb
|
75
75
|
- lib/domoscio_rails/version.rb
|
76
|
-
- lib/tasks/domoscio_rails_tasks.rake
|
77
76
|
homepage: http://www.domoscio.com
|
78
77
|
licenses:
|
79
78
|
- MIT
|
@@ -93,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
92
|
- !ruby/object:Gem::Version
|
94
93
|
version: '0'
|
95
94
|
requirements: []
|
96
|
-
rubygems_version: 3.
|
95
|
+
rubygems_version: 3.0.3
|
97
96
|
signing_key:
|
98
97
|
specification_version: 4
|
99
98
|
summary: Summary of DomoscioRails.
|