xporter_on_demand 0.2.2 → 0.2.3

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: c20b8cf9722f61bfffbfd691aa2fa06bd0323ebae5c68cded27b672439e8ecf3
4
- data.tar.gz: 8477834d81aee2841af45becce03c00062843133cc5d1165cb1561d6937187a3
3
+ metadata.gz: 1dffc5d07f36c9e5c25a536bd69e0bfaab658a08d46d8b605d94061a6e3221e0
4
+ data.tar.gz: f7bb8dc299f7c7eaf7e1295c9352c4d94a93e0191ebce3754d4d92589e45ed18
5
5
  SHA512:
6
- metadata.gz: '09eff785898a410ca8f3092ef5975f6267461f5cd03cf7d6d808972c30fef461b8dd4a35152a04cf5660cd0578ee72eea61f48a792e904edcd06473bfd124ab0'
7
- data.tar.gz: 8cced7c46503b1e04b4b8cd5d11d0ec52f496e96dcf823c34a8cb08d815a5f7e1ec603627b9d594a300a3f4223c76d6bbd730190f7578d0c156e2b63a3673bf6
6
+ metadata.gz: fc7f60cfc5a80fb115cb44e13959830d9fe6fc6bdb0a5f3aa4a5b783f3db3e68485d89d4931bdea960230e3572b7419d4d22684f6e8b2208b6a8f3fdc22810e9
7
+ data.tar.gz: f8c8ef81e40ec1e8bc2b9b57d12ad3f00c3c1d80e6fde1fbff2829b13ad428dc9220bb7ead7a66544b10ac911887135c608e16512132c1bf6d5cadf8baa3f308
@@ -0,0 +1,25 @@
1
+ module XporterOnDemand
2
+ module ExceptionFactory
3
+ def self.generate_exception(response_hash)
4
+ exception_type = response_hash.delete('ExceptionType')
5
+ message = response_hash.delete('Message')
6
+ exception_message = response_hash.delete('ExceptionMessage')
7
+ inner_exception = response_hash.delete('InnerException')
8
+
9
+ unless XporterOnDemand.constants.include? exception_type.to_sym
10
+ XporterOnDemand.const_set exception_type, Class.new(Error)
11
+ end
12
+
13
+ blob = <<~ERROR
14
+ #{exception_type}
15
+ ==========
16
+ Message: #{message}
17
+ ExceptionMessage: #{exception_message}
18
+ InnerException: #{inner_exception}
19
+ ==========
20
+ ERROR
21
+
22
+ raise XporterOnDemand.const_get(exception_type).new(blob)
23
+ end
24
+ end
25
+ end
@@ -1,4 +1,5 @@
1
1
  require 'xporter_on_demand/utils'
2
+ require 'active_model'
2
3
  require 'base64'
3
4
 
4
5
  module XporterOnDemand
@@ -18,7 +18,8 @@ module XporterOnDemand
18
18
 
19
19
  def handle_exceptions(response)
20
20
  response_body = JSON.parse(response.body || {})
21
- raise response_body["ExceptionMessage"] if response_body["ExceptionMessage"] && !@dont_raise_exception
21
+
22
+ raise ExceptionFactory.generate_exception(response_body) if response_body["ExceptionMessage"] && !@dont_raise_exception
22
23
  end
23
24
 
24
25
  def parameterize(sym)
@@ -1,3 +1,3 @@
1
1
  module XporterOnDemand
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -15,10 +15,13 @@ require 'xporter_on_demand/result/base'
15
15
  require 'xporter_on_demand/result/result_set'
16
16
  require 'xporter_on_demand/result/serialiser'
17
17
  require 'xporter_on_demand/registration'
18
+ require 'xporter_on_demand/exception_factory'
18
19
 
19
20
  module XporterOnDemand
20
21
  API_PATH = "https://xporter.groupcall.com/api/v1/"
21
22
  STS_PATH = "https://login.groupcall.com/idaas/sts/STS/GetToken"
22
23
  META_KEYS = %w(ChangedRows DbStatus Meta Pagination)
23
24
  REGISTRATION_PATH = "https://manage.groupcall.com/API/XporterOnDemand/SchoolRegister"
25
+
26
+ class Error < StandardError; end
24
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xporter_on_demand
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Green
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-06 00:00:00.000000000 Z
11
+ date: 2019-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpi
@@ -133,6 +133,7 @@ files:
133
133
  - lib/xporter_on_demand/api.rb
134
134
  - lib/xporter_on_demand/client.rb
135
135
  - lib/xporter_on_demand/endpoint.rb
136
+ - lib/xporter_on_demand/exception_factory.rb
136
137
  - lib/xporter_on_demand/factory.rb
137
138
  - lib/xporter_on_demand/registration.rb
138
139
  - lib/xporter_on_demand/result/base.rb
@@ -161,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
162
  - !ruby/object:Gem::Version
162
163
  version: '0'
163
164
  requirements: []
164
- rubygems_version: 3.0.3
165
+ rubygems_version: 3.0.4
165
166
  signing_key:
166
167
  specification_version: 4
167
168
  summary: Ruby client for the Xporter on Demand API.