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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 80036d711a50e0323cbd9f9fa260ebc9c9c6d194060f68b8be05d2ee7eab4206
4
- data.tar.gz: 944991129c4a01704a0b24776d605ff926f408b48e17e998b1a525bcf43a469b
3
+ metadata.gz: 4b1afdf503120aeb74bb9d38237a533f7becd888b329098199446db697b9fe26
4
+ data.tar.gz: bda6a20da9b44d4ef8a32910688ec633606168f012b7d6af4047854d7e443a0e
5
5
  SHA512:
6
- metadata.gz: ae6d858a4ca54802ff2504ee268fcacf8915cc45832fad48ba59c70daf1f49567112f5647b68dded5ab0056cef403cb77e52e9a06f341fc52f9ee45d52babd98
7
- data.tar.gz: 01f77a383197e1e91b4b4c196d40098b44fec5a60eb2ec87a06ed34bde89633053000799b2920200d38b3b14266dda6e64cba292b34fdd726d54a4f1feb4109f
6
+ metadata.gz: d350f60cbbb55a8e5a8222edac01778216c3e3db07c645b3212c849ab41dc670eb1d79f9d31ff8256a0f5d702934af3043cf368fb9635bc206d44e2023ba50bb
7
+ data.tar.gz: 388c1db2de8db63dfccea4335a0c8542615725408501283293aa537282a8d5ed4e285231f4d3ed45dae603cde678ebef80fb6ad356cc4bf1857dff1c3a4e67a8
@@ -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
- data = DomoscioRails::JSON.load(res.body.nil? ? '' : res.body)
118
- unless (res.kind_of? Net::HTTPClientError) || (res.kind_of? Net::HTTPServerError)
119
- 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)
120
114
  end
121
- rescue MultiJson::LoadError
122
- 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)
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
- params = params.merge({page: j})
130
- res = DomoscioRails.send_request(uri, method, params, headers, before_request_proc)
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
- 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)
132
+ end
133
+ body = DomoscioRails::JSON.load(res.body.nil? ? '' : res.body)
134
+ data += body
135
135
  data.flatten!
136
- rescue MultiJson::LoadError
137
- data = {}
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
- res = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http| # , use_ssl: uri.scheme == 'https') do |http|
148
- req = Net::HTTP::const_get(method.capitalize).new(uri.request_uri, headers)
149
- req.body = DomoscioRails::JSON.dump(params)
150
- before_request_proc.call(req) if before_request_proc
151
- 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)
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' => "DomoscioRails V2 RubyBindings/#{DomoscioRails::VERSION}",
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' => "DomoscioRails V2 RubyBindings/#{DomoscioRails::VERSION}",
188
- '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}",
189
192
  'Content-Type' => 'application/json'
190
193
  }
191
194
  end
192
195
  headers
193
196
  end
194
- end
197
+ end
@@ -1,7 +1,6 @@
1
1
  module DomoscioRails
2
- # An objective knowledge node student.
3
2
  class ObjectiveKnowledgeNodeStudent < Resource
4
3
  include DomoscioRails::HTTPCalls::Fetch
5
4
  include DomoscioRails::HTTPCalls::Update
6
5
  end
7
- end
6
+ 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 if @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
- # 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
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
- def message; @details['Message']; end
21
- def type; @details['Type']; end
22
- def errors; @details['errors']; end
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.2.24"
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.2.24
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-04 00:00:00.000000000 Z
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.1.2
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