domoscio_rails 0.2.24 → 0.3.1

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
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