moneta-api 1.7.0 → 1.8.0

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
  SHA1:
3
- metadata.gz: a6c58596470fc640d704fa5c84ce4e22c2e50671
4
- data.tar.gz: cd9a668ff8bbb2e143338ef8bfff0a7fc81f3137
3
+ metadata.gz: 4b259ad7ef797550ed047b3c8574a71e52b97f2e
4
+ data.tar.gz: ebc37bd7040d7fce6868e23d90704000827a5f7e
5
5
  SHA512:
6
- metadata.gz: aee10955a8d808f7c41c1e6955f1377879f723bcfa4a3f5f7cea5e7b2592f8931cd828baa29c9f8c615aab85adf28e851481ec327c329b35e4cb4000d515c9cf
7
- data.tar.gz: ae85e5e54591267827cdddf22cdcf08f3fadeed22fef37f204afed4f7bda193e712327a4ca1731cab67f31d8073c920a450f0342de744acab45d25b28ae32a2b
6
+ metadata.gz: d3a331bb23264266da8355fac205bb0287b253e84e6e03a1dd1e9134a433db26bd6d9557814d6c56e55e5b824a625794fa861f2729284133300163474b111a07
7
+ data.tar.gz: fe34ca732de7d0a369e3637ad99574d3c0efda9de2229a4145e6162342089276cc6ff7fe4bc6cf3cf7e0b4603b1383c7587d21a10e289f03df65409862cc5414
@@ -0,0 +1,5 @@
1
+ module Moneta
2
+ module Api
3
+ class ConnectionException < Exception; end
4
+ end
5
+ end
@@ -1,5 +1,9 @@
1
1
  module Moneta
2
2
  module Api
3
- class Exception < StandardError; end
3
+ class Exception < StandardError
4
+ def to_hash
5
+ { message: message }
6
+ end
7
+ end
4
8
  end
5
9
  end
@@ -1,5 +1,25 @@
1
1
  module Moneta
2
2
  module Api
3
- class HTTPException < Exception; end
3
+ class HTTPException < Exception
4
+ attr_reader :code
5
+
6
+ def initialize(code, message)
7
+ super(message)
8
+
9
+ @code = code
10
+ end
11
+
12
+
13
+ def inspect
14
+ "#{ @code }: #{ message }"
15
+ end
16
+
17
+ def to_hash
18
+ {
19
+ code: code,
20
+ message: message,
21
+ }
22
+ end
23
+ end
4
24
  end
5
25
  end
@@ -1,5 +1,28 @@
1
1
  module Moneta
2
2
  module Api
3
- class RuntimeException < Exception; end
3
+ class RuntimeException < Exception
4
+ attr_reader :code, :detail
5
+
6
+ def initialize(code, message, detail)
7
+ super(message)
8
+
9
+ @code = code
10
+ @detail = detail
11
+ end
12
+
13
+ def inspect
14
+ error = [ "#{ @code }: #{ message }" ]
15
+ error += detail.collect { |key, value| "#{ key }: #{ Array(value).join($/) }" }
16
+ error.join($/)
17
+ end
18
+
19
+ def to_hash
20
+ {
21
+ code: code,
22
+ message: message,
23
+ detail: detail
24
+ }
25
+ end
26
+ end
4
27
  end
5
28
  end
@@ -192,9 +192,18 @@ module Moneta
192
192
 
193
193
  ResponseFactory.build(response)
194
194
  rescue Savon::SOAPFault => e
195
- raise Moneta::Api::RuntimeException.new(e.message)
195
+ error_details = e.to_hash[:fault]
196
+
197
+ message = error_details[:faultstring]
198
+ code = error_details[:faultcode]
199
+ detail = error_details[:detail]
200
+
201
+ raise Moneta::Api::RuntimeException.new(code, message, detail)
196
202
  rescue Savon::HTTPError => e
197
- raise Moneta::Api::HTTPException.new(e.message)
203
+ http = e.http
204
+ raise Moneta::Api::HTTPException.new(http.code, http.body)
205
+ rescue HTTPI::Error => e
206
+ raise Moneta::Api::ConnectionException.new(e.message)
198
207
  end
199
208
 
200
209
  def validate!(method, request)
@@ -31,14 +31,13 @@ module Moneta
31
31
  # Операции выполняются в том порядке, в котором они переданы в запросе.
32
32
  # / Set of transfers to be processed in one batch. Processed in order of appearance.
33
33
  #
34
- # @param [Moneta::Api::Types::Entity*]
34
+ # @param [Moneta::Api::Types::ConfirmTransactionRequestType]
35
35
  # @return void
36
36
  def add_transaction(item)
37
- parents = item.class.ancestors
38
- if parents.include?(Moneta::Api::Types::Entity)
37
+ if item.is_a?(Moneta::Api::Types::ConfirmTransactionRequestType)
39
38
  (@transaction ||=[]).push(item)
40
39
  else
41
- raise TypeError.new("TypeError: #{ item.class } have not parent Moneta::Api::Types::Entity")
40
+ raise TypeError.new("TypeError: #{ item.class } should be a Moneta::Api::Types::ConfirmTransactionRequestType")
42
41
  end
43
42
  end
44
43
  end
@@ -1,5 +1,5 @@
1
1
  module Moneta
2
2
  module Api
3
- VERSION = '1.7.0'
3
+ VERSION = '1.8.0'
4
4
  end
5
5
  end
data/lib/moneta/api.rb CHANGED
@@ -9,6 +9,7 @@ require 'moneta/api/key_value_serializer'
9
9
  require 'moneta/api/exception'
10
10
  require 'moneta/api/runtime_exception'
11
11
  require 'moneta/api/http_exception'
12
+ require 'moneta/api/connection_exception'
12
13
 
13
14
  require 'moneta/api/types/account_access_info'
14
15
  require 'moneta/api/types/account_info'
@@ -0,0 +1,9 @@
1
+ describe Moneta::Api::ConnectionException do
2
+ describe '.to_hash' do
3
+ let(:message) { 'error' }
4
+
5
+ subject { described_class.new(message).to_hash }
6
+
7
+ its([:message]) { is_expected.to eq message }
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ describe Moneta::Api::HTTPException do
2
+ let(:message) { 'Server Error' }
3
+ let(:code) { '500' }
4
+
5
+ let(:exception) { described_class.new(code, message) }
6
+
7
+ describe '.to_hash' do
8
+ subject { exception.to_hash }
9
+
10
+ its([:message]) { is_expected.to eq message }
11
+ its([:code]) { is_expected.to eq code }
12
+ end
13
+
14
+ describe '.inspect' do
15
+ subject { exception }
16
+
17
+ its(:inspect) { is_expected.to eq '500: Server Error' }
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ describe Moneta::Api::RuntimeException do
2
+ let(:message) { 'error' }
3
+ let(:code) { 'SOAP-ENV:Client' }
4
+ let(:detail) { { foo: ['bar'] } }
5
+
6
+ let(:exception) { described_class.new(code, message, detail) }
7
+
8
+ describe '.to_hash' do
9
+ subject { exception.to_hash }
10
+
11
+ its([:message]) { is_expected.to eq message }
12
+ its([:code]) { is_expected.to eq code }
13
+ its([:detail]) { is_expected.to eq detail }
14
+ end
15
+
16
+ describe '.inspect' do
17
+ subject { exception }
18
+
19
+ its(:inspect) { is_expected.to eq "SOAP-ENV:Client: error#{ $/ }foo: bar" }
20
+ end
21
+ end
@@ -14,7 +14,7 @@ describe Moneta::Api::Service do
14
14
  context 'when soap raise error' do
15
15
  let(:account_id) { -1 }
16
16
 
17
- it { expect { subject }.to raise_exception(Moneta::Api::RuntimeException, '(SOAP-ENV:Client) Validation error') }
17
+ it { expect { subject }.to raise_exception(Moneta::Api::RuntimeException, 'Validation error') }
18
18
  end
19
19
 
20
20
  context 'when soap http error' do
@@ -0,0 +1,19 @@
1
+ describe Moneta::Api::Types::ConfirmTransactionBatchRequestType do
2
+ describe '.add_transaction' do
3
+ let(:request) { described_class.new }
4
+
5
+ it 'should add transaction' do
6
+ transaction = Moneta::Api::Types::ConfirmTransactionRequestType.new
7
+
8
+ request.add_transaction(transaction)
9
+
10
+ expect(request.transaction).to include transaction
11
+ end
12
+
13
+ it 'should not add with wrong type' do
14
+ transaction = Moneta::Api::Types::Entity.new
15
+
16
+ expect { request.add_transaction(transaction) }.to raise_exception TypeError
17
+ end
18
+ end
19
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moneta-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ssnikolay
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-18 00:00:00.000000000 Z
12
+ date: 2016-01-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: savon
@@ -168,6 +168,7 @@ files:
168
168
  - README.md
169
169
  - Rakefile
170
170
  - lib/moneta/api.rb
171
+ - lib/moneta/api/connection_exception.rb
171
172
  - lib/moneta/api/data_mapper.rb
172
173
  - lib/moneta/api/exception.rb
173
174
  - lib/moneta/api/http_exception.rb
@@ -273,6 +274,8 @@ files:
273
274
  - lib/moneta/api/version.rb
274
275
  - lib/moneta/core_ext/string.rb
275
276
  - moneta-api.gemspec
277
+ - spec/lib/moneta/api/connection_exception_spec.rb
278
+ - spec/lib/moneta/api/http_exception_spec.rb
276
279
  - spec/lib/moneta/api/requests/approve_phone_send_confirmation_request_spec.rb
277
280
  - spec/lib/moneta/api/requests/authorise_transaction_batch_request_spec.rb
278
281
  - spec/lib/moneta/api/requests/authorise_transaction_request_spec.rb
@@ -291,7 +294,9 @@ files:
291
294
  - spec/lib/moneta/api/requests/profile/edit_organization_profile_request_spec.rb
292
295
  - spec/lib/moneta/api/requests/transfer_request_spec.rb
293
296
  - spec/lib/moneta/api/response/find_account_by_id_spec.rb
297
+ - spec/lib/moneta/api/runtime_exception_spec.rb
294
298
  - spec/lib/moneta/api/service_spec.rb
299
+ - spec/lib/moneta/api/types/confirm_transaction_batch_request_type_spec.rb
295
300
  - spec/lib/moneta/api/types/operation_info_spec.rb
296
301
  - spec/lib/moneta/api/types/profile/client_spec.rb
297
302
  - spec/spec_helper.rb
@@ -360,6 +365,8 @@ signing_key:
360
365
  specification_version: 4
361
366
  summary: "МОНЕТА.РУ (MONETA.MerchantAPI.v2)"
362
367
  test_files:
368
+ - spec/lib/moneta/api/connection_exception_spec.rb
369
+ - spec/lib/moneta/api/http_exception_spec.rb
363
370
  - spec/lib/moneta/api/requests/approve_phone_send_confirmation_request_spec.rb
364
371
  - spec/lib/moneta/api/requests/authorise_transaction_batch_request_spec.rb
365
372
  - spec/lib/moneta/api/requests/authorise_transaction_request_spec.rb
@@ -378,7 +385,9 @@ test_files:
378
385
  - spec/lib/moneta/api/requests/profile/edit_organization_profile_request_spec.rb
379
386
  - spec/lib/moneta/api/requests/transfer_request_spec.rb
380
387
  - spec/lib/moneta/api/response/find_account_by_id_spec.rb
388
+ - spec/lib/moneta/api/runtime_exception_spec.rb
381
389
  - spec/lib/moneta/api/service_spec.rb
390
+ - spec/lib/moneta/api/types/confirm_transaction_batch_request_type_spec.rb
382
391
  - spec/lib/moneta/api/types/operation_info_spec.rb
383
392
  - spec/lib/moneta/api/types/profile/client_spec.rb
384
393
  - spec/spec_helper.rb