moneta-api 1.10.0 → 1.11.0

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
  SHA1:
3
- metadata.gz: b0775314725a571de3eba1237d6135441ff8d755
4
- data.tar.gz: e093584a582e6aa8cfc0f16c786ca732a23cfb83
3
+ metadata.gz: 32e3556379b34c0d6f8f9c49e5ac900507a4cbc7
4
+ data.tar.gz: 592cac8f18ac96eec9789058866b5dc3cc4f0fd5
5
5
  SHA512:
6
- metadata.gz: 46da55895e4add3fa186c7ca8f84b292e0ca628694dbd576616c52a8c232c4f41f19510f57c38804dbb4a3011ef17f5f02d9e28b43ee01c8f66f98553abeb0b0
7
- data.tar.gz: e9f8396bc95d9daa176706040452d7961e635d71cc0b003d5d207ea649bc6df85aa7a302604aa72a1f572473f5646f6ecfcfaa8ed553094b564a145035c5ccc2
6
+ metadata.gz: a6611d4fb8741eac88f8ea29c65ea9c777df3e69e1ca38648f1211686d7964c3d670e8b25591bc738e958d035b0c87d1d0823d32d5ef1f7358c5ef21f0072788
7
+ data.tar.gz: 179a18fcc4097481d92aa42b8500a75d9a489199534a7706f8037a84afc30520b994b87993b0a76f2ff0d89492a7910236695eaefcaa4a3c372ad51f66482e68
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/moneta-api.svg)](http://badge.fury.io/rb/moneta-api)
2
- [![Build Status](https://travis-ci.org/ssnikolay/moneta-api.svg?branch=master)](https://travis-ci.org/ssnikolay/moneta-api)
2
+ [![Build Status](https://travis-ci.org/RuntimeLLC/moneta-api.svg?branch=master)](https://travis-ci.org/RuntimeLLC/moneta-api)
3
3
  [![Code Climate](https://codeclimate.com/github/ssnikolay/moneta-api/badges/gpa.svg)](https://codeclimate.com/github/ssnikolay/moneta-api)
4
4
  [![Test Coverage](https://codeclimate.com/github/ssnikolay/moneta-api/badges/coverage.svg)](https://codeclimate.com/github/ssnikolay/moneta-api)
5
5
  [![Inline docs](http://inch-ci.org/github/ssnikolay/moneta-api.svg?branch=master)](http://inch-ci.org/github/ssnikolay/moneta-api)
@@ -74,6 +74,7 @@ gem 'moneta-api'
74
74
  Moneta::Api::Service.new('username', 'password', {
75
75
  logger: Rails.logger,
76
76
  log_level: :info,
77
+ log: true,
77
78
  filters: [:password]
78
79
  })
79
80
  ```
@@ -0,0 +1,9 @@
1
+ module Moneta
2
+ module Api
3
+ module Requests
4
+ # Перевод денежных средств в пакетном режиме.
5
+ # Money Transfer Request in batch processing mode.
6
+ class TransferBatchRequest < Types::TransferBatchRequestType; end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ module Moneta
2
+ module Api
3
+ module Responses
4
+ # Ответ на запрос проведения платежа в пакетном режиме.
5
+ # Transactions authorisation response in batch processing mode.
6
+
7
+ class TransferBatchResponse
8
+ include Moneta::Api::DataMapper
9
+
10
+ # @return [Array[Moneta::Api::Types::TransactionBatchResponseType]] Детали проведенных операций, либо описание ошибок, если операция не проведена.
11
+ # Порядок соответствует набору операций, переданных в TransferBatchRequest.
12
+ # Either transaction details or error description in order of appearance in corresponding request.
13
+ property :transaction, type: Moneta::Api::Types::TransactionBatchResponseType
14
+ end
15
+ end
16
+ end
17
+ end
@@ -115,6 +115,12 @@ module Moneta
115
115
  call(__method__, request)
116
116
  end
117
117
 
118
+ # @param [Moneta::Api::Requests::TransferBatchRequest]
119
+ # @return [Moneta::Api::Responses::TransferBatchResponse]
120
+ def transfer_batch(request)
121
+ call(__method__, request)
122
+ end
123
+
118
124
  # @param [Moneta::Api::Requests::PaymentRequest]
119
125
  # @return [Moneta::Api::Responses::PaymentResponse]
120
126
  def payment(request)
@@ -1,5 +1,3 @@
1
- require_relative 'entity'
2
-
3
1
  module Moneta
4
2
  module Api
5
3
  module Types
@@ -0,0 +1,47 @@
1
+ module Moneta
2
+ module Api
3
+ module Types
4
+ # Тип, описывающий параметры операции в запросах в пакетном режиме.
5
+ # Transaction parameters type for requests in batch processing mode.
6
+
7
+ class TransferBatchRequestType < Entity
8
+ # @return [Boolean] Флаг, указывающий выполнять ли все денежные переводы в одной транзакции.
9
+ # Если transactional = true, то:
10
+ # при возникновении ошибки все проведенные операции будут отменены
11
+ # можно проводить только операции со счетами монеты. Нельзя выводить деньги на внешние платежные системы.
12
+ # Если transactional = false, то:
13
+ # при возникновении ошибки все проведенные операции будут сохранены
14
+ # можно проводить любые операции, которые доступны в TransferRequest
15
+ # если выставить флаг exitOnFailure = false, то при возникновении ошибки можно пропустить операцию
16
+ # и продолжить выполнение операций дальше
17
+ # / Joining all transfers in batch processing into one transaction. True -- all processed transfers will be rolled back on exceptions, no external transfers are allowed. False -- only current transfer rolled back on exceptions, external transfers are allowed.
18
+ property :transactional
19
+
20
+ # @return [Boolean] Флаг, указывающий прерывать ли выполнение пакета операций, если произошла ошибка.
21
+ # Используется только при transactional = false
22
+ # / Stops batch processing on exceptions. Used only in conjunction with transactional=false.
23
+ property :exit_on_failure
24
+
25
+ # @return [Array[Moneta::Api::Types::Entity*]] Набор операций, которые необходимо выполнить в одном пакете.
26
+ # Операции выполняются в том порядке, в котором они переданы в запросе.
27
+ # / Set of transfers to be processed in one batch. Processed in order of appearance.
28
+ property :transaction
29
+
30
+ # Набор операций, которые необходимо выполнить в одном пакете.
31
+ # Операции выполняются в том порядке, в котором они переданы в запросе.
32
+ # / Set of transfers to be processed in one batch. Processed in order of appearance.
33
+ #
34
+ # @param [Moneta::Api::Types::Entity*]
35
+ # @return void
36
+ def add_transaction(item)
37
+ parents = item.class.ancestors
38
+ if parents.include?(Moneta::Api::Types::Entity)
39
+ (@transaction ||=[]).push(item)
40
+ else
41
+ raise TypeError.new("TypeError: #{ item.class } have not parent Moneta::Api::Types::Entity")
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,5 +1,5 @@
1
1
  module Moneta
2
2
  module Api
3
- VERSION = '1.10.0'
3
+ VERSION = '1.11.0'
4
4
  end
5
5
  end
data/lib/moneta/api.rb CHANGED
@@ -11,6 +11,7 @@ require 'moneta/api/runtime_exception'
11
11
  require 'moneta/api/http_exception'
12
12
  require 'moneta/api/connection_exception'
13
13
 
14
+ require 'moneta/api/types/entity'
14
15
  require 'moneta/api/types/account_access_info'
15
16
  require 'moneta/api/types/account_info'
16
17
  require 'moneta/api/types/authorise_transaction_batch_request_type'
@@ -21,7 +22,7 @@ require 'moneta/api/types/cancel_transaction_request_type'
21
22
  require 'moneta/api/types/cancel_transaction_response_type'
22
23
  require 'moneta/api/types/confirm_transaction_batch_request_type'
23
24
  require 'moneta/api/types/confirm_transaction_request_type'
24
- require 'moneta/api/types/entity'
25
+ require 'moneta/api/types/transfer_batch_request_type'
25
26
  require 'moneta/api/types/hash_entity'
26
27
  require 'moneta/api/types/key_value_entity'
27
28
  require 'moneta/api/types/find_operations_list_request_filter'
@@ -60,6 +61,7 @@ require 'moneta/api/requests/invoice_request'
60
61
  require 'moneta/api/requests/payment_request'
61
62
  require 'moneta/api/requests/refund_request'
62
63
  require 'moneta/api/requests/transfer_request'
64
+ require 'moneta/api/requests/transfer_batch_request'
63
65
  require 'moneta/api/requests/verify_payment_request'
64
66
  require 'moneta/api/requests/verify_transaction_request'
65
67
  require 'moneta/api/requests/verify_transfer_request'
@@ -98,6 +100,7 @@ require 'moneta/api/responses/invoice_response'
98
100
  require 'moneta/api/responses/payment_response'
99
101
  require 'moneta/api/responses/refund_response'
100
102
  require 'moneta/api/responses/transfer_response'
103
+ require 'moneta/api/responses/transfer_batch_response'
101
104
  require 'moneta/api/responses/verify_payment_response'
102
105
  require 'moneta/api/responses/verify_transaction_response'
103
106
  require 'moneta/api/responses/verify_transfer_response'
@@ -0,0 +1,73 @@
1
+ describe Moneta::Api::Requests::TransferBatchRequest do
2
+ describe 'Entity extension' do
3
+ subject { described_class.new.properties.keys }
4
+
5
+ it { is_expected.to be_include(:version) }
6
+ it { is_expected.to be_include(:transactional) }
7
+ end
8
+
9
+ describe '#add_transaction' do
10
+ let(:request) { described_class.new }
11
+ let(:add_transaction) { request.add_transaction(item) }
12
+
13
+ context 'when valid item' do
14
+ let(:item) { Moneta::Api::Requests::PaymentRequest.new }
15
+
16
+ it 'should success add' do
17
+ add_transaction
18
+ expect(request.transaction.count).to eq 1
19
+ end
20
+ end
21
+
22
+ context 'when invalid item' do
23
+ let(:item) { Hash.new }
24
+
25
+ it { expect { add_transaction }.to raise_error }
26
+ end
27
+ end
28
+
29
+ describe 'use', vcr: true do
30
+ include_context 'moneta'
31
+
32
+ let(:data) {
33
+ {
34
+ amount: 10,
35
+ payee: 28988504,
36
+ payer: 10999,
37
+ is_payer_amount: false,
38
+ payment_password: '12345'
39
+ }
40
+ }
41
+
42
+ let(:request) do
43
+ described_class.new.tap do |request|
44
+ request.transactional = false
45
+ request.exit_on_failure = true
46
+ operations.each { |o| request.add_transaction(o) }
47
+ end
48
+ end
49
+
50
+ subject { service.transfer_batch(request) }
51
+
52
+ context 'when one operation' do
53
+ let(:operations) do
54
+ [
55
+ Moneta::Api::Requests::TransferRequest.build(data)
56
+ ]
57
+ end
58
+
59
+ its('transaction.transaction') { is_expected.to be_a_kind_of(Moneta::Api::Types::TransactionResponseType) }
60
+ end
61
+
62
+ context 'when two operations' do
63
+ let(:operations) do
64
+ [
65
+ Moneta::Api::Requests::TransferRequest.build(data),
66
+ Moneta::Api::Requests::TransferRequest.build(data)
67
+ ]
68
+ end
69
+
70
+ its('transaction.first.transaction') { is_expected.to be_a_kind_of(Moneta::Api::Types::TransactionResponseType) }
71
+ end
72
+ end
73
+ end