fidor_api 1.0.0 → 2.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +26 -49
  3. data/Rakefile +6 -3
  4. data/lib/fidor_api/client/authentication.rb +63 -0
  5. data/lib/fidor_api/client/configuration.rb +32 -0
  6. data/lib/fidor_api/client/connection.rb +56 -0
  7. data/lib/fidor_api/client/dsl/confirmable_actions.rb +19 -0
  8. data/lib/fidor_api/client/dsl/core_data.rb +19 -0
  9. data/lib/fidor_api/client/dsl/messages.rb +31 -0
  10. data/lib/fidor_api/client/dsl/transactions.rb +15 -0
  11. data/lib/fidor_api/client/dsl/transfers/classic.rb +29 -0
  12. data/lib/fidor_api/client/dsl/transfers/generic.rb +34 -0
  13. data/lib/fidor_api/client/dsl/transfers.rb +22 -0
  14. data/lib/fidor_api/client/dsl.rb +59 -0
  15. data/lib/fidor_api/client.rb +17 -21
  16. data/lib/fidor_api/collection/kaminari_support.rb +17 -0
  17. data/lib/fidor_api/collection.rb +18 -34
  18. data/lib/fidor_api/environment/base.rb +21 -0
  19. data/lib/fidor_api/environment/fidor_de/production.rb +23 -0
  20. data/lib/fidor_api/environment/fidor_de/sandbox.rb +23 -0
  21. data/lib/fidor_api/environment/fidor_de.rb +8 -0
  22. data/lib/fidor_api/environment/future.rb +21 -0
  23. data/lib/fidor_api/environment.rb +7 -0
  24. data/lib/fidor_api/errors.rb +3 -26
  25. data/lib/fidor_api/model/account.rb +25 -0
  26. data/lib/fidor_api/model/base.rb +44 -0
  27. data/lib/fidor_api/model/confirmable_action.rb +9 -0
  28. data/lib/fidor_api/model/customer.rb +36 -0
  29. data/lib/fidor_api/model/helpers/action_view_support.rb +21 -0
  30. data/lib/fidor_api/model/helpers/attribute_decimal_methods.rb +32 -0
  31. data/lib/fidor_api/model/helpers.rb +8 -0
  32. data/lib/fidor_api/model/message.rb +23 -0
  33. data/lib/fidor_api/model/transaction.rb +21 -0
  34. data/lib/fidor_api/model/transfer/classic/base.rb +15 -0
  35. data/lib/fidor_api/model/transfer/classic/internal.rb +20 -0
  36. data/lib/fidor_api/model/transfer/classic/sepa.rb +11 -0
  37. data/lib/fidor_api/model/transfer/classic.rb +11 -0
  38. data/lib/fidor_api/model/transfer/generic.rb +71 -0
  39. data/lib/fidor_api/model/transfer.rb +8 -0
  40. data/lib/fidor_api/model/user.rb +10 -0
  41. data/lib/fidor_api/model.rb +13 -0
  42. data/lib/fidor_api/token.rb +13 -18
  43. data/lib/fidor_api/version.rb +1 -1
  44. data/lib/fidor_api.rb +14 -58
  45. metadata +152 -89
  46. data/.gitignore +0 -11
  47. data/.rspec +0 -2
  48. data/.ruby-gemset +0 -1
  49. data/.ruby-version +0 -1
  50. data/.travis.yml +0 -20
  51. data/CHANGELOG.md +0 -129
  52. data/Gemfile +0 -15
  53. data/LICENSE.txt +0 -21
  54. data/bin/console +0 -14
  55. data/bin/setup +0 -7
  56. data/fidor_api.gemspec +0 -24
  57. data/lib/fidor_api/account.rb +0 -45
  58. data/lib/fidor_api/amount_attributes.rb +0 -30
  59. data/lib/fidor_api/approval_required.rb +0 -9
  60. data/lib/fidor_api/auth.rb +0 -45
  61. data/lib/fidor_api/beneficiary/ach.rb +0 -39
  62. data/lib/fidor_api/beneficiary/base.rb +0 -118
  63. data/lib/fidor_api/beneficiary/generic.rb +0 -24
  64. data/lib/fidor_api/beneficiary/p2p_account_number.rb +0 -14
  65. data/lib/fidor_api/beneficiary/p2p_phone.rb +0 -14
  66. data/lib/fidor_api/beneficiary/p2p_username.rb +0 -14
  67. data/lib/fidor_api/beneficiary/swift.rb +0 -35
  68. data/lib/fidor_api/beneficiary/unknown.rb +0 -16
  69. data/lib/fidor_api/beneficiary/utility.rb +0 -35
  70. data/lib/fidor_api/beneficiary.rb +0 -27
  71. data/lib/fidor_api/card.rb +0 -77
  72. data/lib/fidor_api/card_limit_attribute.rb +0 -52
  73. data/lib/fidor_api/card_limits.rb +0 -14
  74. data/lib/fidor_api/confirmable_action.rb +0 -45
  75. data/lib/fidor_api/connectivity/connection.rb +0 -113
  76. data/lib/fidor_api/connectivity/endpoint.rb +0 -82
  77. data/lib/fidor_api/connectivity/resource.rb +0 -76
  78. data/lib/fidor_api/connectivity.rb +0 -17
  79. data/lib/fidor_api/constants.rb +0 -3
  80. data/lib/fidor_api/customer.rb +0 -140
  81. data/lib/fidor_api/customers/confirmations.rb +0 -19
  82. data/lib/fidor_api/message.rb +0 -52
  83. data/lib/fidor_api/msisdn.rb +0 -45
  84. data/lib/fidor_api/password.rb +0 -29
  85. data/lib/fidor_api/preauth.rb +0 -33
  86. data/lib/fidor_api/preauth_details.rb +0 -97
  87. data/lib/fidor_api/session_token.rb +0 -20
  88. data/lib/fidor_api/transaction.rb +0 -37
  89. data/lib/fidor_api/transaction_details.rb +0 -119
  90. data/lib/fidor_api/transfer/ach.rb +0 -46
  91. data/lib/fidor_api/transfer/bank_internal.rb +0 -37
  92. data/lib/fidor_api/transfer/base.rb +0 -36
  93. data/lib/fidor_api/transfer/fps.rb +0 -56
  94. data/lib/fidor_api/transfer/generic.rb +0 -134
  95. data/lib/fidor_api/transfer/internal.rb +0 -53
  96. data/lib/fidor_api/transfer/p2p_account_number.rb +0 -45
  97. data/lib/fidor_api/transfer/p2p_phone.rb +0 -45
  98. data/lib/fidor_api/transfer/p2p_username.rb +0 -45
  99. data/lib/fidor_api/transfer/sepa.rb +0 -56
  100. data/lib/fidor_api/transfer/swift.rb +0 -49
  101. data/lib/fidor_api/transfer/utility.rb +0 -50
  102. data/lib/fidor_api/transfer.rb +0 -17
  103. data/lib/fidor_api/user.rb +0 -24
@@ -1,97 +0,0 @@
1
- module FidorApi
2
-
3
- module PreauthDetails
4
-
5
- def self.build(type, hash)
6
- implementation(type).new(hash)
7
- end
8
-
9
- class Base
10
- def initialize(attributes = {})
11
- set_attributes(attributes)
12
- end
13
-
14
- def description
15
- "-"
16
- end
17
- end
18
-
19
- class CreditCard < Base
20
- extend ModelAttribute
21
-
22
- attribute :cc_category, :string
23
- attribute :cc_merchant_category, :string
24
- attribute :cc_merchant_name, :string
25
- attribute :cc_sequence, :string
26
- attribute :cc_type, :string
27
- attribute :pos_code, :string
28
- attribute :financial_network_code, :string
29
-
30
- def description
31
- cc_merchant_name.presence || super
32
- end
33
- end
34
-
35
- class InternalTransfer < Base
36
- extend ModelAttribute
37
-
38
- attribute :internal_transfer_id, :string
39
- attribute :remote_account_id, :string
40
- attribute :remote_bic, :string
41
- attribute :remote_iban, :string
42
- attribute :remote_name, :string
43
- attribute :remote_nick, :string
44
- attribute :remote_subject, :string
45
-
46
- def description
47
- remote_name || remote_nick || super
48
- end
49
- end
50
-
51
- class CapitalBond < Base
52
- extend ModelAttribute
53
- end
54
-
55
- class CurrencyOrder < Base
56
- extend ModelAttribute
57
- end
58
-
59
- class Gmt < Base
60
- extend ModelAttribute
61
-
62
- attribute :destination_country, :string
63
- attribute :destination_currency, :string
64
- attribute :amount_in_destination_currency, :string
65
- attribute :exchange_rate, :string
66
- attribute :fee_transaction_id, :string
67
- end
68
-
69
- class Ripple < Base
70
- extend ModelAttribute
71
- end
72
-
73
- class Unknown < Base
74
- extend ModelAttribute
75
-
76
- def method_missing(method, *args)
77
- return if method[-1] == "="
78
- super
79
- end
80
- end
81
-
82
- private
83
-
84
- def self.implementation(type)
85
- {
86
- "creditcard_preauth" => CreditCard,
87
- "internal_transfer_preauth" => InternalTransfer,
88
- "capital_bond_preauth" => CapitalBond,
89
- "currency_order_preauth" => CurrencyOrder,
90
- "gmt_preauth" => Gmt,
91
- "ripple_preauth" => Ripple
92
- }.fetch(type, Unknown)
93
- end
94
-
95
- end
96
-
97
- end
@@ -1,20 +0,0 @@
1
- module FidorApi
2
- class SessionToken < Connectivity::Resource
3
- extend ModelAttribute
4
- extend AmountAttributes
5
-
6
- attribute :token, :string
7
-
8
- self.endpoint = Connectivity::Endpoint.new('/session_tokens', :collection)
9
-
10
- def self.create(access_token)
11
- new endpoint.for(self).post(payload: {access_token: access_token}).body
12
- end
13
-
14
- module ClientSupport
15
- def create_session_token
16
- SessionToken.create(token.access_token)
17
- end
18
- end
19
- end
20
- end
@@ -1,37 +0,0 @@
1
- module FidorApi
2
- class Transaction < Connectivity::Resource
3
- extend ModelAttribute
4
- extend AmountAttributes
5
-
6
- self.endpoint = Connectivity::Endpoint.new('/transactions', :collection)
7
-
8
- attribute :id, :integer
9
- attribute :account_id, :string
10
- attribute :transaction_type, :string
11
- attribute :transaction_type_details, :json
12
- attribute :subject, :string
13
- attribute :currency, :string
14
- attribute :booking_date, :time
15
- attribute :value_date, :time
16
- attribute :booking_code, :string
17
- attribute :return_transaction_id, :string
18
- attribute :created_at, :time
19
- attribute :updated_at, :time
20
- amount_attribute :amount
21
-
22
- def transaction_type_details
23
- @_transaction_type_details ||= TransactionDetails.build(@transaction_type, @transaction_type_details)
24
- end
25
-
26
- module ClientSupport
27
- def transactions(options = {})
28
- Transaction.all(options)
29
- end
30
-
31
- def transaction(id)
32
- Transaction.find(id)
33
- end
34
- end
35
- end
36
-
37
- end
@@ -1,119 +0,0 @@
1
- module FidorApi
2
-
3
- module TransactionDetails
4
-
5
- def self.build(type, hash)
6
- implementation(type).new(hash)
7
- end
8
-
9
- class Base
10
- def initialize(attributes = {})
11
- set_attributes(attributes)
12
- end
13
-
14
- def remote_display_name
15
- "Fidor Bank"
16
- end
17
- end
18
-
19
- class Transfer < Base
20
- extend ModelAttribute
21
-
22
- attribute :internal_transfer_id, :string
23
- attribute :sepa_credit_transfer_id, :string
24
- attribute :remote_account_id, :string
25
- attribute :remote_bic, :string
26
- attribute :remote_iban, :string
27
- attribute :remote_name, :string
28
- attribute :remote_nick, :string
29
- attribute :remote_subject, :string
30
-
31
- def remote_display_name
32
- remote_name.presence || remote_nick.presence || super
33
- end
34
- end
35
-
36
- class CreditCard < Base
37
- extend ModelAttribute
38
-
39
- attribute :cc_category, :string
40
- attribute :cc_merchant_category, :string
41
- attribute :cc_merchant_name, :string
42
- attribute :cc_sequence, :string
43
- attribute :cc_type, :string
44
-
45
- def remote_display_name
46
- cc_merchant_name.presence || super
47
- end
48
- end
49
-
50
- class Gmt < Base
51
- extend ModelAttribute
52
-
53
- attribute :destination_country, :string
54
- attribute :destination_currency, :string
55
- attribute :amount_in_destination_currency, :string
56
- attribute :exchange_rate, :string
57
- attribute :fee_transaction_id, :string
58
- end
59
-
60
- class Bonus < Base
61
- extend ModelAttribute
62
-
63
- attribute :affiliate_id, :string
64
- attribute :affiliate_name, :string
65
- attribute :affiliate_transaction_type_id, :string
66
- attribute :affiliate_transaction_type_name, :string
67
- attribute :affiliate_transaction_type_category, :string
68
- end
69
-
70
- class MobileTopup < Base
71
- extend ModelAttribute
72
-
73
- attribute :provider, :string
74
- attribute :phone_number, :string
75
- attribute :topup_subject, :string
76
- end
77
-
78
- class Unknown < Base
79
- extend ModelAttribute
80
-
81
- def method_missing(method, *args)
82
- return if method[-1] == "="
83
- super
84
- end
85
- end
86
-
87
- private
88
-
89
- def self.implementation(type)
90
- {
91
- "fidor_payin" => Transfer,
92
- "fidor_payout" => Transfer,
93
- "emoney_payin" => Transfer,
94
- "sepa_payin" => Transfer,
95
- "payout" => Transfer,
96
- "creditcard_preauth" => CreditCard,
97
- "creditcard_release" => CreditCard,
98
- "creditcard_payout" => CreditCard,
99
- "creditcard_payin" => CreditCard,
100
- "creditcard_annual_fee" => CreditCard,
101
- "creditcard_foreign_exchange_fee" => CreditCard,
102
- "creditcard_order_fee" => CreditCard,
103
- "creditcard_order_cancellation" => CreditCard,
104
- "creditcard_order_withdrawal_fee" => CreditCard,
105
- "creditcard_atm_fee" => CreditCard,
106
- "creditcard_notification_fee" => CreditCard,
107
- "sepa_core_direct_debit" => Transfer,
108
- "sepa_b2b_direct_debit" => Transfer,
109
- "gmt_payout" => Gmt,
110
- "gmt_refund" => Gmt,
111
- "gmt_fee" => Gmt,
112
- "bonus" => Bonus,
113
- "prepaid_mobile_topup" => MobileTopup
114
- }.fetch(type, Unknown)
115
- end
116
-
117
- end
118
-
119
- end
@@ -1,46 +0,0 @@
1
- module FidorApi
2
- module Transfer
3
- class ACH < Base
4
- include Generic
5
-
6
- attribute :account_number, :string
7
- attribute :routing_code, :string
8
-
9
- validates :contact_name, presence: true, unless: :beneficiary_reference_passed?
10
- validates :account_number, presence: true, unless: :beneficiary_reference_passed?
11
- validates :routing_code, presence: true, unless: :beneficiary_reference_passed?
12
-
13
- def set_attributes(attrs = {})
14
- set_beneficiary_attributes(attrs)
15
- self.account_number = attrs.fetch("beneficiary", {}).fetch("routing_info", {})["account_number"]
16
- self.routing_code = attrs.fetch("beneficiary", {}).fetch("routing_info", {})["routing_code"]
17
- super(attrs.except("beneficiary"))
18
- end
19
-
20
- def as_json_routing_type
21
- "ACH"
22
- end
23
-
24
- def as_json_routing_info
25
- {
26
- account_number: account_number,
27
- routing_code: routing_code
28
- }
29
- end
30
-
31
- module ClientSupport
32
- def ach_transfers(options = {})
33
- Transfer::ACH.all(options)
34
- end
35
-
36
- def ach_transfer(id)
37
- Transfer::ACH.find(id)
38
- end
39
-
40
- def build_ach_transfer(attributes = {})
41
- Transfer::ACH.new(attributes)
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,37 +0,0 @@
1
- module FidorApi
2
- module Transfer
3
- class BankInternal < Base
4
- include Generic
5
- attribute :account_number, :string
6
-
7
- validates :account_number, presence: true, unless: :beneficiary_reference_passed?
8
-
9
- def set_attributes(attrs = {})
10
- self.account_number = attrs.fetch("beneficiary", {}).fetch("routing_info", {})["account_number"]
11
- super(attrs)
12
- end
13
-
14
- def as_json_routing_type
15
- 'BANK_INTERNAL'
16
- end
17
-
18
- def as_json_routing_info
19
- {
20
- account_number: account_number
21
- }
22
- end
23
-
24
- private
25
-
26
- def remote_create
27
- response = endpoint.for(self).post(payload: self.as_json)
28
-
29
- if path = response.headers["X-Fidor-Confirmation-Path"]
30
- self.confirmable_action = ConfirmableAction.new(id: path.split("/").last)
31
- end
32
-
33
- response
34
- end
35
- end
36
- end
37
- end
@@ -1,36 +0,0 @@
1
- module FidorApi
2
- module Transfer
3
- class Base < Connectivity::Resource
4
- self.endpoint = Connectivity::Endpoint.new('/transfers', :collection)
5
-
6
- attr_accessor :confirmable_action
7
-
8
- def save
9
- fail InvalidRecordError unless valid?
10
- super
11
- end
12
-
13
- def needs_confirmation?
14
- self.confirmable_action.present?
15
- end
16
-
17
- private
18
-
19
- def remote_create
20
- response = super
21
- if path = response.headers["X-Fidor-Confirmation-Path"]
22
- self.confirmable_action = ConfirmableAction.new(id: path.split("/").last)
23
- end
24
- response
25
- end
26
-
27
- def remote_update(*attributes)
28
- response = super
29
- if path = response.headers["X-Fidor-Confirmation-Path"]
30
- self.confirmable_action = ConfirmableAction.new(id: path.split("/").last)
31
- end
32
- response
33
- end
34
- end
35
- end
36
- end
@@ -1,56 +0,0 @@
1
- module FidorApi
2
- module Transfer
3
- class FPS < Base
4
- extend ModelAttribute
5
- extend AmountAttributes
6
-
7
- self.endpoint = Connectivity::Endpoint.new('/fps_transfers', :collection)
8
-
9
- attribute :id, :integer
10
- attribute :account_id, :string
11
- attribute :user_id, :string
12
- attribute :transaction_id, :string
13
- attribute :remote_account, :string
14
- attribute :remote_sort_code, :string
15
- attribute :remote_name, :string
16
- attribute :external_uid, :string
17
- attribute :subject, :string
18
- attribute :currency, :string
19
- attribute :subject, :string
20
- attribute :state, :string
21
- attribute :created_at, :time
22
- attribute :updated_at, :time
23
- amount_attribute :amount
24
-
25
- def self.required_attributes
26
- [ :account_id, :external_uid, :remote_account, :remote_sort_code, :remote_name, :amount, :subject ]
27
- end
28
-
29
- def self.writeable_attributes
30
- required_attributes
31
- end
32
-
33
- validates *required_attributes, presence: true
34
-
35
- def as_json
36
- attributes.slice *self.class.writeable_attributes
37
- end
38
-
39
- private
40
-
41
- module ClientSupport
42
- def fps_transfers(options = {})
43
- Transfer::FPS.all(options)
44
- end
45
-
46
- def fps_transfer(id)
47
- Transfer::FPS.find(id)
48
- end
49
-
50
- def build_fps_transfer(attributes = {})
51
- Transfer::FPS.new(attributes)
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,134 +0,0 @@
1
- module FidorApi
2
- module Transfer
3
- module Generic
4
- ROUTING_INFO_ERROR_PREFIX = "beneficiary.routing_info.".freeze
5
-
6
- def self.included(base)
7
- base.extend ModelAttribute
8
- base.extend AmountAttributes
9
-
10
- base.validates *required_attributes, presence: true
11
- base.validates :beneficiary_unique_name, presence: true, if: -> { create_beneficiary && !beneficiary_reference_passed? }
12
-
13
- base.attribute :id, :string
14
- base.attribute :account_id, :string
15
- base.attribute :external_uid, :string
16
- base.attribute :subject, :string
17
- base.attribute :currency, :string
18
- base.attribute :exchange_rate, :string
19
- base.attribute :subject, :string
20
- base.attribute :state, :string
21
- base.amount_attribute :amount
22
-
23
- base.attribute :beneficiary_unique_name, :string
24
- base.attribute :contact_name, :string
25
- base.attribute :contact_address_line_1, :string
26
- base.attribute :contact_address_line_2, :string
27
- base.attribute :contact_city, :string
28
- base.attribute :contact_country, :string
29
- base.attribute :bank_name, :string
30
- base.attribute :bank_address_line_1, :string
31
- base.attribute :bank_address_line_2, :string
32
- base.attribute :bank_city, :string
33
- base.attribute :bank_country, :string
34
- base.attribute :create_beneficiary, :boolean
35
-
36
- base.attribute :beneficiary_id, :string
37
-
38
- base.attribute :created_at, :time
39
- base.attribute :updated_at, :time
40
- end
41
-
42
- def self.required_attributes
43
- [ :account_id, :external_uid, :amount, :subject, :currency ]
44
- end
45
-
46
- def as_json
47
- transfer_json_params.merge(beneficiary_json_params)
48
- end
49
-
50
- private
51
-
52
- def beneficiary_reference_passed?
53
- beneficiary_id.present?
54
- end
55
-
56
- def transfer_json_params
57
- {
58
- account_id: account_id,
59
- external_uid: external_uid,
60
- amount: (amount * 100).to_i,
61
- currency: currency,
62
- subject: subject
63
- }
64
- end
65
-
66
- def beneficiary_json_params
67
- if beneficiary_reference_passed?
68
- {
69
- beneficiary_id: beneficiary_id
70
- }
71
- else
72
- {
73
- beneficiary: {
74
- unique_name: beneficiary_unique_name.presence,
75
- contact: {
76
- name: contact_name,
77
- address_line_1: contact_address_line_1,
78
- address_line_2: contact_address_line_2,
79
- city: contact_city,
80
- country: contact_country
81
- }.compact,
82
- bank: {
83
- name: bank_name,
84
- address_line_1: bank_address_line_1,
85
- address_line_2: bank_address_line_2,
86
- city: bank_city,
87
- country: bank_country
88
- }.compact,
89
- routing_type: as_json_routing_type,
90
- routing_info: as_json_routing_info
91
- },
92
- create_beneficiary: create_beneficiary
93
- }.compact
94
- end
95
- end
96
-
97
- def set_beneficiary_attributes(attrs)
98
- self.beneficiary_unique_name = attrs.fetch("beneficiary", {})["unique_name"]
99
-
100
- self.contact_name = attrs.fetch("beneficiary", {}).fetch("contact", {})["name"]
101
- self.contact_address_line_1 = attrs.fetch("beneficiary", {}).fetch("contact", {})["address_line_1"]
102
- self.contact_address_line_2 = attrs.fetch("beneficiary", {}).fetch("contact", {})["address_line_2"]
103
- self.contact_city = attrs.fetch("beneficiary", {}).fetch("contact", {})["city"]
104
- self.contact_country = attrs.fetch("beneficiary", {}).fetch("contact", {})["country"]
105
-
106
- self.bank_name = attrs.fetch("beneficiary", {}).fetch("bank", {})["name"]
107
- self.bank_address_line_1 = attrs.fetch("beneficiary", {}).fetch("bank", {})["address_line_1"]
108
- self.bank_address_line_2 = attrs.fetch("beneficiary", {}).fetch("bank", {})["address_line_2"]
109
- self.bank_city = attrs.fetch("beneficiary", {}).fetch("bank", {})["city"]
110
- self.bank_country = attrs.fetch("beneficiary", {}).fetch("bank", {})["country"]
111
- end
112
-
113
- def map_errors(fields)
114
- fields.each do |hash|
115
- field = hash["field"].to_sym
116
- key = hash["key"].try :to_sym
117
-
118
- if field == :base || respond_to?(field)
119
- if key
120
- errors.add(field, key, message: hash["message"])
121
- else
122
- errors.add(field, hash["message"])
123
- end
124
- elsif hash["field"] == "beneficiary.unique_name"
125
- errors.add(:beneficiary_unique_name, hash["message"])
126
- elsif hash["field"].start_with?(ROUTING_INFO_ERROR_PREFIX)
127
- invalid_field = hash["field"][ROUTING_INFO_ERROR_PREFIX.size..-1]
128
- errors.add(invalid_field, hash["key"].to_sym, message: hash["message"])
129
- end
130
- end
131
- end
132
- end
133
- end
134
- end
@@ -1,53 +0,0 @@
1
- module FidorApi
2
- module Transfer
3
- class Internal < Base
4
- extend ModelAttribute
5
- extend AmountAttributes
6
-
7
- self.endpoint = Connectivity::Endpoint.new('/internal_transfers', :collection)
8
-
9
- attribute :id, :integer
10
- attribute :account_id, :string
11
- attribute :user_id, :string
12
- attribute :transaction_id, :string
13
- attribute :receiver, :string
14
- attribute :external_uid, :string
15
- attribute :currency, :string
16
- attribute :subject, :string
17
- attribute :state, :string
18
- attribute :created_at, :time
19
- attribute :updated_at, :time
20
- amount_attribute :amount
21
-
22
- def self.required_attributes
23
- [ :account_id, :receiver, :external_uid, :amount, :subject ]
24
- end
25
-
26
- def self.writeable_attributes
27
- required_attributes
28
- end
29
-
30
- validates *required_attributes, presence: true
31
-
32
- def as_json
33
- attributes.slice *self.class.writeable_attributes
34
- end
35
-
36
- private
37
-
38
- module ClientSupport
39
- def internal_transfers(options = {})
40
- Transfer::Internal.all(options)
41
- end
42
-
43
- def internal_transfer(id)
44
- Transfer::Internal.find(id)
45
- end
46
-
47
- def build_internal_transfer(attributes = {})
48
- Transfer::Internal.new(attributes)
49
- end
50
- end
51
- end
52
- end
53
- end
@@ -1,45 +0,0 @@
1
- module FidorApi
2
- module Transfer
3
- class P2pAccountNumber < Base
4
- include Generic
5
-
6
- attribute :account_number, :string
7
-
8
- validates :account_number, presence: true, unless: :beneficiary_reference_passed?
9
-
10
- def set_attributes(attrs = {})
11
- set_beneficiary_attributes(attrs)
12
- self.account_number = attrs.fetch("beneficiary", {}).fetch("routing_info", {})["account_number"]
13
- super(attrs.except("beneficiary"))
14
- end
15
-
16
- def as_json_routing_type
17
- "FOS_P2P_ACCOUNT_NUMBER".freeze
18
- end
19
-
20
- def as_json_routing_info
21
- {
22
- account_number: account_number
23
- }
24
- end
25
-
26
- module ClientSupport
27
- def p2p_account_number_transfers(options = {})
28
- Transfer::P2pAccountNumber.all(options)
29
- end
30
-
31
- def p2p_account_number_transfer(id)
32
- Transfer::P2pAccountNumber.find(id)
33
- end
34
-
35
- def build_p2p_account_number_transfer(attributes = {})
36
- Transfer::P2pAccountNumber.new(attributes)
37
- end
38
-
39
- def update_p2p_account_number_transfer(id, attributes = {})
40
- Transfer::P2pAccountNumber.new(attributes.merge(id: id))
41
- end
42
- end
43
- end
44
- end
45
- end