domoscio_rails 0.2.16.9 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: add91f521b4696d8f1b28a6bf6dcc1dd72503176
4
- data.tar.gz: e574faa0b6825861ce4003d727c89132b954df62
2
+ SHA256:
3
+ metadata.gz: 7de15318619ac60add7c2ebeb2157708e3a5df0256f3dcb0773631b4dd7dc256
4
+ data.tar.gz: 149d4a92db05a3c93feb9cbc5121d3b56773957e36585643ad477908ada0f6c1
5
5
  SHA512:
6
- metadata.gz: 5448dbccc4872fdc44a40e41bc38de1320c8e4877950191047104d6e3058f6416ebf4b10e86e63bb40df4845568267f49c1310b73e1d38522aa1653ab6fd163b
7
- data.tar.gz: 344c000e34b3f35778e387fd850a5e927a31366518a877d19fa27dabf484663d51bd418ec0912ed0760c430154a66d8fa35f89d29cd093c8fb67c53daf1c19f5
6
+ metadata.gz: 76d276424eb7a5863cd5f657e85e6d37a550cb04dece402c84a3965b1ab2b0254d7a2a17361ada6e60ff01cb5273f8d043d01aba95992fd5587cc2af9841c435
7
+ data.tar.gz: 7607882ea4f08fef22593bdc691f770dc6c791cf3034a416b09473882c73762b70e3b78169f11f931c953f64adaf8ecab54f255b643e0382e6ff472274f2d32a
@@ -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'
@@ -35,18 +33,15 @@ require 'domoscio_rails/metadata/tag_set'
35
33
  require 'domoscio_rails/metadata/tag_edge'
36
34
  require 'domoscio_rails/data/knowledge_node_student'
37
35
  require 'domoscio_rails/data/event'
36
+ require 'domoscio_rails/data/learning_session'
38
37
  require 'domoscio_rails/utils/review_util'
39
38
  require 'domoscio_rails/utils/gameplay_util'
40
39
  require 'domoscio_rails/utils/alerts_util'
41
40
  require 'domoscio_rails/utils/recommendation_util'
42
41
  require 'domoscio_rails/metadata/delta_object'
43
-
44
42
  module DomoscioRails
45
-
46
43
  class Configuration
47
- attr_accessor :preproduction, :test, :root_url,
48
- :client_id, :client_passphrase,
49
- :temp_dir, :disabled, :version
44
+ attr_accessor :preproduction, :test, :dev, :root_url, :client_id, :client_passphrase, :temp_dir, :disabled, :version
50
45
 
51
46
  def disabled
52
47
  @disabled || false
@@ -60,6 +55,10 @@ module DomoscioRails
60
55
  @test || false
61
56
  end
62
57
 
58
+ def dev
59
+ @dev || false
60
+ end
61
+
63
62
  def version
64
63
  @version || 1
65
64
  end
@@ -67,9 +66,11 @@ module DomoscioRails
67
66
  def root_url
68
67
  if @preproduction == true
69
68
  if @test == true
70
- @root_url || "https://domoscio-adaptive-engine-staging.azurewebsites.net"
69
+ @root_url || "https://staging.adaptive-engine.domoscio.com"
70
+ elsif @dev == true
71
+ @root_url || "https://preprod.adaptive-engine.domoscio.com"
71
72
  else
72
- @root_url || "https://domoscio-adaptive-engine.azurewebsites.net"
73
+ @root_url || "https://adaptive-engine.domoscio.com"
73
74
  end
74
75
  else
75
76
  @root_url || "http://localhost:3001"
@@ -104,64 +105,54 @@ module DomoscioRails
104
105
  return false if @disabled
105
106
  uri = api_uri(url)
106
107
  uri.query = URI.encode_www_form(filters) unless filters.empty?
107
-
108
108
  res = DomoscioRails.send_request(uri, method, params, headers, before_request_proc)
109
-
110
- # decode json data
109
+ return res if res.kind_of? DomoscioRails::ProcessingError
111
110
  begin
112
- data = DomoscioRails::JSON.load(res.body.nil? ? '' : res.body)
113
- unless (res.kind_of? Net::HTTPClientError) || (res.kind_of? Net::HTTPServerError)
114
- DomoscioRails::AuthorizationToken::Manager.storage.store({access_token: res['Accesstoken'], refresh_token: res['Refreshtoken']})
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, params)
115
114
  end
116
- rescue MultiJson::LoadError
117
- data = {}
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, params)
119
+ rescue ResponseError => exception
120
+ data = exception
118
121
  end
119
122
 
120
123
  if res['Total'] && !filters[:page]
121
124
  pagetotal = (res['Total'].to_i / res['Per-Page'].to_f).ceil
122
-
123
125
  for j in 2..pagetotal
124
- params = params.merge({page: j})
125
- res = DomoscioRails.send_request(uri, method, params, headers, before_request_proc)
126
-
127
- # 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
128
128
  begin
129
- data += DomoscioRails::JSON.load(res.body.nil? ? '' : res.body)
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, params)
132
+ end
133
+ body = DomoscioRails::JSON.load(res.body.nil? ? '' : res.body)
134
+ data += body
130
135
  data.flatten!
131
- rescue MultiJson::LoadError
132
- data = {}
136
+ rescue MultiJson::LoadError => exception
137
+ return ProcessingError.new(uri, 500, exception, res.body, params)
138
+ rescue ResponseError => exception
139
+ return exception
133
140
  end
134
-
135
141
  end
136
142
  end
137
-
138
- ############### TEMP!!!! #######################################################
139
- #pp method, uri.request_uri, params #, filters, headers
140
- #pp res, data
141
- #puts
142
-
143
- # if (!(res.is_a? Net::HTTPOK))
144
- # ex = DomoscioRails::ResponseError.new(uri, res.code, data)
145
- # ############## TEMP!!!! ########################################################
146
- # #pp ex, data
147
- # raise ex
148
- # end
149
-
150
- # copy pagination info if any
151
- # ['x-number-of-pages', 'x-number-of-items'].each { |k|
152
- # filters[k.gsub('x-number-of-', 'total_')] = res[k].to_i if res[k]
153
- # }
154
-
155
143
  data
156
144
  end
157
145
 
158
-
159
146
  def self.send_request(uri, method, params, headers, before_request_proc)
160
- res = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http| # , use_ssl: uri.scheme == 'https') do |http|
161
- req = Net::HTTP::const_get(method.capitalize).new(uri.request_uri, headers)
162
- req.body = DomoscioRails::JSON.dump(params)
163
- before_request_proc.call(req) if before_request_proc
164
- http.request req
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)
165
156
  end
166
157
  end
167
158
 
@@ -169,7 +160,6 @@ module DomoscioRails
169
160
 
170
161
  def self.user_agent
171
162
  @uname ||= get_uname
172
-
173
163
  {
174
164
  bindings_version: DomoscioRails::VERSION,
175
165
  lang: 'ruby',
@@ -190,21 +180,18 @@ module DomoscioRails
190
180
 
191
181
  if !auth_token.is_a? String
192
182
  headers = {
193
- 'user_agent' => "DomoscioRails V2 RubyBindings/#{DomoscioRails::VERSION}",
183
+ 'user_agent' => "#{DomoscioRails.user_agent}",
194
184
  'AccessToken' => "#{auth_token[:access_token]}",
195
185
  'RefreshToken' => "#{auth_token[:refresh_token]}",
196
186
  'Content-Type' => 'application/json'
197
187
  }
198
188
  else
199
189
  headers = {
200
- 'user_agent' => "DomoscioRails V2 RubyBindings/#{DomoscioRails::VERSION}",
201
- 'Authorization' => "Token token=#{DomoscioRails.configuration.client_passphrase}",#"#{auth_token['token_type']} #{auth_token['access_token']}",
190
+ 'user_agent' => "#{DomoscioRails.user_agent}",
191
+ 'Authorization' => "Token token=#{DomoscioRails.configuration.client_passphrase}",
202
192
  'Content-Type' => 'application/json'
203
193
  }
204
194
  end
205
195
  headers
206
-
207
196
  end
208
-
209
-
210
- end
197
+ end
@@ -1,6 +1,6 @@
1
1
  module DomoscioRails
2
- # An objective knowledge node student.
3
2
  class ObjectiveKnowledgeNodeStudent < Resource
4
3
  include DomoscioRails::HTTPCalls::Fetch
4
+ include DomoscioRails::HTTPCalls::Update
5
5
  end
6
- end
6
+ end
@@ -5,5 +5,6 @@ module DomoscioRails
5
5
  include DomoscioRails::HTTPCalls::Fetch
6
6
  include DomoscioRails::HTTPCalls::Update
7
7
  include DomoscioRails::HTTPCalls::Destroy
8
+ include DomoscioRails::HTTPCalls::Util
8
9
  end
9
- end
10
+ 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,6 +60,7 @@ module DomoscioRails
63
60
  end
64
61
 
65
62
  def file_path
63
+ @temp_dir = DomoscioRails.configuration.temp_dir
66
64
  File.join(@temp_dir, "DomoscioRails.AuthorizationToken.FileStore.tmp")
67
65
  end
68
66
  end
@@ -0,0 +1,10 @@
1
+ module DomoscioRails
2
+ # A LearningSession is basicly a group of events.
3
+ class LearningSession < Resource
4
+
5
+ include DomoscioRails::HTTPCalls::Create
6
+ include DomoscioRails::HTTPCalls::Fetch
7
+ include DomoscioRails::HTTPCalls::Destroy
8
+
9
+ end
10
+ 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
- # Thrown from any MangoPay API call whenever
10
- # it returns response with HTTP code != 200.
6
+ # Error Message from AdaptiveEngine
11
7
  class ResponseError < Error
12
-
13
- attr_reader :request_url, :code, :details
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, :request_params
9
+ def initialize(request_url, code, details, body, request_params)
10
+ @request_url, @code, @details, @body, @request_params = request_url, code, details, body, request_params
17
11
  super(message) if message
18
12
  end
13
+ def message; @details.dig(:error, :message) || @details; end
14
+ end
19
15
 
20
- def message; @details['Message']; end
21
- def type; @details['Type']; end
22
- def errors; @details['errors']; end
16
+ # ProcessingError from DomoscioRails
17
+ class ProcessingError < Error
18
+ attr_reader :request_url, :code, :details, :body, :request_params
19
+ def initialize(request_url, code, details, body, request_params)
20
+ @request_url, @code, @details, @body, @request_params = request_url, code, details, body, request_params
21
+ super(message) if message
22
+ end
23
+ def message; @details.message; end
23
24
  end
24
25
  end
@@ -1,6 +1,6 @@
1
1
  module DomoscioRails
2
2
  module HTTPCalls
3
-
3
+
4
4
  module Create
5
5
  module ClassMethods
6
6
  def create(*id, params)
@@ -25,7 +25,7 @@ module DomoscioRails
25
25
  base.extend(ClassMethods)
26
26
  end
27
27
  end
28
-
28
+
29
29
  module UpdateSelf
30
30
  module ClassMethods
31
31
  def update_self(params = {})
@@ -54,7 +54,7 @@ module DomoscioRails
54
54
  id_or_filters.is_a?(Hash) ? [nil, id_or_filters] : [id_or_filters, {}]
55
55
  end
56
56
  end
57
-
57
+
58
58
  module Destroy
59
59
  module ClassMethods
60
60
  def destroy(id = nil, params = {})
@@ -64,9 +64,9 @@ module DomoscioRails
64
64
 
65
65
  def self.included(base)
66
66
  base.extend(ClassMethods)
67
- end
67
+ end
68
68
  end
69
-
69
+
70
70
  module Util
71
71
  module ClassMethods
72
72
  def util(id = nil, util_name = nil, params = {})
@@ -79,9 +79,9 @@ module DomoscioRails
79
79
 
80
80
  def self.included(base)
81
81
  base.extend(ClassMethods)
82
- end
82
+ end
83
83
  end
84
-
85
-
84
+
85
+
86
86
  end
87
- end
87
+ 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.2.16.9"
3
- end
2
+ VERSION = "0.3.2"
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.2.16.9
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benoit Praly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-05 00:00:00.000000000 Z
11
+ date: 2020-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -51,6 +51,7 @@ files:
51
51
  - lib/domoscio_rails/content/knowledge_node_content.rb
52
52
  - lib/domoscio_rails/data/event.rb
53
53
  - lib/domoscio_rails/data/knowledge_node_student.rb
54
+ - lib/domoscio_rails/data/learning_session.rb
54
55
  - lib/domoscio_rails/data/result.rb
55
56
  - lib/domoscio_rails/errors.rb
56
57
  - lib/domoscio_rails/http_calls.rb
@@ -72,7 +73,6 @@ files:
72
73
  - lib/domoscio_rails/utils/recommendation_util.rb
73
74
  - lib/domoscio_rails/utils/review_util.rb
74
75
  - lib/domoscio_rails/version.rb
75
- - lib/tasks/domoscio_rails_tasks.rake
76
76
  homepage: http://www.domoscio.com
77
77
  licenses:
78
78
  - MIT
@@ -92,8 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
94
  requirements: []
95
- rubyforge_project:
96
- rubygems_version: 2.6.14
95
+ rubygems_version: 3.0.3
97
96
  signing_key:
98
97
  specification_version: 4
99
98
  summary: Summary of DomoscioRails.
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :domoscio_rails do
3
- # # Task goes here
4
- # end