ibanity 0.5 → 1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ibanity/api/base_resource.rb +44 -14
- data/lib/ibanity/api/isabel_connect/access_token.rb +17 -0
- data/lib/ibanity/api/isabel_connect/account.rb +15 -0
- data/lib/ibanity/api/isabel_connect/account_report.rb +15 -0
- data/lib/ibanity/api/isabel_connect/balance.rb +11 -0
- data/lib/ibanity/api/isabel_connect/bulk_payment_initiation_request.rb +25 -0
- data/lib/ibanity/api/isabel_connect/refresh_token.rb +29 -0
- data/lib/ibanity/api/isabel_connect/transaction.rb +10 -0
- data/lib/ibanity/api/o_auth_resource.rb +12 -0
- data/lib/ibanity/api/sandbox/financial_institution_account.rb +41 -0
- data/lib/ibanity/api/sandbox/financial_institution_transaction.rb +45 -0
- data/lib/ibanity/api/sandbox/financial_institution_user.rb +32 -0
- data/lib/ibanity/api/xs2a/account.rb +33 -0
- data/lib/ibanity/api/xs2a/account_information_access_request.rb +27 -0
- data/lib/ibanity/api/xs2a/customer.rb +10 -0
- data/lib/ibanity/api/xs2a/customer_access_token.rb +11 -0
- data/lib/ibanity/api/xs2a/financial_institution.rb +36 -0
- data/lib/ibanity/api/xs2a/payment_initiation_request.rb +33 -0
- data/lib/ibanity/api/xs2a/synchronization.rb +17 -0
- data/lib/ibanity/api/xs2a/transaction.rb +21 -0
- data/lib/ibanity/client.rb +35 -27
- data/lib/ibanity/collection.rb +47 -0
- data/lib/ibanity/http_signature.rb +3 -1
- data/lib/ibanity/version.rb +1 -1
- data/lib/ibanity.rb +37 -14
- metadata +22 -11
- data/lib/ibanity/api/account.rb +0 -20
- data/lib/ibanity/api/account_information_access_request.rb +0 -17
- data/lib/ibanity/api/customer_access_token.rb +0 -9
- data/lib/ibanity/api/financial_institution.rb +0 -30
- data/lib/ibanity/api/financial_institution_account.rb +0 -39
- data/lib/ibanity/api/financial_institution_transaction.rb +0 -43
- data/lib/ibanity/api/financial_institution_user.rb +0 -30
- data/lib/ibanity/api/payment_initiation_request.rb +0 -24
- data/lib/ibanity/api/transaction.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e37b469bd141088935b144204e2522c25f28657
|
4
|
+
data.tar.gz: 5c3206720d78551e9de27dc7d33c6d8986ff9a0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09e62fcb6e64df961c1bdc5812a15cdcb521f808c34b9ad2876279618495b460939e99543abb61f5ac0378a2c495a2959e0b58519d1c0a00e190b60545ec7199'
|
7
|
+
data.tar.gz: d5d0c2a422f60bd89b6cc224f33f54f76ebec8848976937751737ecb8bd2c25e675d6099f19d3487517428c5dc85fe61c920e83a48dd2bfb7e5946bcb725b45b
|
@@ -1,29 +1,38 @@
|
|
1
1
|
module Ibanity
|
2
2
|
class BaseResource < OpenStruct
|
3
|
-
def self.create_by_uri(uri:, resource_type:, attributes:, customer_access_token: nil, idempotency_key: nil)
|
3
|
+
def self.create_by_uri(uri:, resource_type:, attributes:, customer_access_token: nil, idempotency_key: nil, meta: nil)
|
4
4
|
payload = {
|
5
5
|
data: {
|
6
6
|
type: resource_type,
|
7
7
|
attributes: attributes
|
8
8
|
}
|
9
9
|
}
|
10
|
+
payload[:data][:meta] = meta if meta
|
10
11
|
raw_item = Ibanity.client.post(uri: uri, payload: payload, customer_access_token: customer_access_token, idempotency_key: idempotency_key)
|
11
12
|
new(raw_item["data"], customer_access_token)
|
12
13
|
end
|
13
14
|
|
14
|
-
def self.list_by_uri(uri:, query_params: {}, customer_access_token: nil)
|
15
|
-
|
16
|
-
|
15
|
+
def self.list_by_uri(uri:, query_params: {}, customer_access_token: nil, headers: nil)
|
16
|
+
raw_response = Ibanity.client.get(uri: uri, query_params: query_params, headers: headers, customer_access_token: customer_access_token)
|
17
|
+
items = raw_response["data"].map do |raw_item|
|
17
18
|
new(raw_item, customer_access_token)
|
18
19
|
end
|
20
|
+
Ibanity::Collection.new(
|
21
|
+
klass: self,
|
22
|
+
items: items,
|
23
|
+
links: raw_response["links"],
|
24
|
+
paging: raw_response.dig("meta", "paging"),
|
25
|
+
synchronized_at: raw_response.dig("meta", "synchronizedAt"),
|
26
|
+
latest_synchronization: raw_response.dig("meta", "latestSynchronization"),
|
27
|
+
)
|
19
28
|
end
|
20
29
|
|
21
|
-
def self.find_by_uri(uri:, customer_access_token: nil)
|
22
|
-
new(find_raw_by_uri(uri: uri, customer_access_token: customer_access_token), customer_access_token)
|
30
|
+
def self.find_by_uri(uri:, customer_access_token: nil, headers: nil)
|
31
|
+
new(find_raw_by_uri(uri: uri, customer_access_token: customer_access_token, headers: headers), customer_access_token)
|
23
32
|
end
|
24
33
|
|
25
|
-
def self.find_raw_by_uri(uri:, customer_access_token: nil)
|
26
|
-
raw_item = Ibanity.client.get(uri: uri, customer_access_token: customer_access_token)
|
34
|
+
def self.find_raw_by_uri(uri:, customer_access_token: nil, headers: nil)
|
35
|
+
raw_item = Ibanity.client.get(uri: uri, customer_access_token: customer_access_token, headers: headers)
|
27
36
|
raw_item["data"]
|
28
37
|
end
|
29
38
|
|
@@ -43,6 +52,15 @@ module Ibanity
|
|
43
52
|
new(raw_item["data"])
|
44
53
|
end
|
45
54
|
|
55
|
+
def self.find_file_by_uri(uri:, customer_access_token: nil, headers: nil)
|
56
|
+
Ibanity.client.get(uri: uri, customer_access_token: customer_access_token, headers: headers)
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.create_file_by_uri(uri:, resource_type:, raw_content:, customer_access_token: nil, idempotency_key: nil, headers: nil)
|
60
|
+
raw_item = Ibanity.client.post(uri: uri, payload: raw_content, customer_access_token: customer_access_token, idempotency_key: idempotency_key, json: false, headers: headers)
|
61
|
+
new(raw_item["data"], customer_access_token)
|
62
|
+
end
|
63
|
+
|
46
64
|
def initialize(raw, customer_access_token = nil)
|
47
65
|
attributes = prepare_attributes(raw)
|
48
66
|
super(attributes)
|
@@ -52,6 +70,8 @@ module Ibanity
|
|
52
70
|
|
53
71
|
links = raw["links"] || {}
|
54
72
|
setup_links(links)
|
73
|
+
|
74
|
+
meta = raw["meta"] || {}
|
55
75
|
end
|
56
76
|
|
57
77
|
def reload!
|
@@ -78,19 +98,19 @@ module Ibanity
|
|
78
98
|
def setup_relationships(relationships, customer_access_token = nil)
|
79
99
|
relationships.each do |key, relationship|
|
80
100
|
if relationship["data"]
|
81
|
-
klass =
|
101
|
+
klass = relationship_klass(key)
|
82
102
|
method_name = Ibanity::Util.underscore(key)
|
83
|
-
define_singleton_method(method_name) do
|
84
|
-
klass.find_by_uri(uri: relationship["links"]["related"], customer_access_token: customer_access_token)
|
103
|
+
define_singleton_method(method_name) do |headers: nil|
|
104
|
+
klass.find_by_uri(uri: relationship["links"]["related"], headers: headers, customer_access_token: customer_access_token)
|
85
105
|
end
|
86
106
|
self[Ibanity::Util.underscore("#{key}_id")] = relationship["data"]["id"]
|
87
107
|
else
|
88
108
|
singular_key = key[0..-2]
|
89
|
-
klass =
|
109
|
+
klass = relationship_klass(singular_key)
|
90
110
|
method_name = Ibanity::Util.underscore(key)
|
91
|
-
define_singleton_method(method_name) do
|
111
|
+
define_singleton_method(method_name) do |headers: nil, **query_params|
|
92
112
|
uri = relationship["links"]["related"]
|
93
|
-
klass.list_by_uri(uri: uri, customer_access_token: customer_access_token)
|
113
|
+
klass.list_by_uri(uri: uri, headers: headers, query_params: query_params, customer_access_token: customer_access_token)
|
94
114
|
end
|
95
115
|
end
|
96
116
|
end
|
@@ -101,5 +121,15 @@ module Ibanity
|
|
101
121
|
self[Ibanity::Util.underscore("#{key}_link")] = link
|
102
122
|
end
|
103
123
|
end
|
124
|
+
|
125
|
+
def relationship_klass(name)
|
126
|
+
camelized_name = Ibanity::Util.camelize(name)
|
127
|
+
enclosing_module = if camelized_name == "FinancialInstitution"
|
128
|
+
Ibanity::Xs2a
|
129
|
+
else
|
130
|
+
Object.const_get(self.class.to_s.split("::")[0...-1].join("::"))
|
131
|
+
end
|
132
|
+
enclosing_module.const_get(camelized_name)
|
133
|
+
end
|
104
134
|
end
|
105
135
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module IsabelConnect
|
3
|
+
class AccessToken < Ibanity::OAuthResource
|
4
|
+
def self.create(refresh_token:, idempotency_key: nil)
|
5
|
+
uri = Ibanity.isabel_connect_api_schema["oAuth2"]["accessTokens"]
|
6
|
+
arguments = [
|
7
|
+
["grant_type", "refresh_token"],
|
8
|
+
["refresh_token", refresh_token],
|
9
|
+
["client_id", Ibanity.client.client_id],
|
10
|
+
["client_secret", Ibanity.client.client_secret]
|
11
|
+
]
|
12
|
+
payload = URI.encode_www_form(arguments)
|
13
|
+
create_by_uri(uri: uri, payload: payload, idempotency_key: idempotency_key)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module IsabelConnect
|
3
|
+
class Account < Ibanity::BaseResource
|
4
|
+
def self.list(access_token:, headers: nil, **query_params)
|
5
|
+
uri = Ibanity.isabel_connect_api_schema["accounts"].sub("{accountId}", "")
|
6
|
+
list_by_uri(uri: uri, query_params: query_params, customer_access_token: access_token, headers: headers)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.find(id:, access_token:, headers: nil)
|
10
|
+
uri = Ibanity.isabel_connect_api_schema["accounts"].sub("{accountId}", id)
|
11
|
+
find_by_uri(uri: uri, customer_access_token: access_token, headers: headers)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module IsabelConnect
|
3
|
+
class AccountReport < Ibanity::BaseResource
|
4
|
+
def self.list(access_token:, headers: nil, **query_params)
|
5
|
+
uri = Ibanity.isabel_connect_api_schema["accountReports"].sub("{accountReportId}", "")
|
6
|
+
list_by_uri(uri: uri, query_params: query_params, customer_access_token: access_token, headers: headers)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.find(id:, access_token:)
|
10
|
+
uri = Ibanity.isabel_connect_api_schema["accountReports"].sub("{accountReportId}", id)
|
11
|
+
find_file_by_uri(uri: uri, customer_access_token: access_token, headers: { accept: "text/plain" })
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module IsabelConnect
|
3
|
+
class Balance < Ibanity::BaseResource
|
4
|
+
def self.list(account_id:, access_token:, headers: nil, **query_params)
|
5
|
+
Ibanity.isabel_connect_api_schema["accounts"]["balances"]
|
6
|
+
uri = Ibanity.isabel_connect_api_schema["account"]["balances"].sub("{accountId}", account_id)
|
7
|
+
list_by_uri(uri: uri, query_params: query_params, customer_access_token: access_token, headers: headers)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module IsabelConnect
|
3
|
+
class BulkPaymentInitiationRequest < Ibanity::BaseResource
|
4
|
+
def self.create(access_token:, raw_content:, filename:, idempotency_key: nil)
|
5
|
+
uri = Ibanity.isabel_connect_api_schema["bulkPaymentInitiationRequests"].sub("{bulkPaymentInitiationRequestId}", "")
|
6
|
+
create_file_by_uri(
|
7
|
+
uri: uri,
|
8
|
+
resource_type: "bulkPaymentInitiationRequest",
|
9
|
+
raw_content: raw_content,
|
10
|
+
customer_access_token: access_token,
|
11
|
+
idempotency_key: idempotency_key,
|
12
|
+
headers: {
|
13
|
+
content_type: :xml,
|
14
|
+
"Content-Disposition": "inline; filename=#{filename}"
|
15
|
+
}
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.find(id:, access_token:)
|
20
|
+
uri = Ibanity.isabel_connect_api_schema["bulkPaymentInitiationRequests"].sub("{bulkPaymentInitiationRequestId}", id)
|
21
|
+
find_by_uri(uri: uri, customer_access_token: access_token)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module IsabelConnect
|
3
|
+
class RefreshToken < Ibanity::OAuthResource
|
4
|
+
def self.create(authorization_code:, redirect_uri:, idempotency_key: nil)
|
5
|
+
uri = Ibanity.isabel_connect_api_schema["oAuth2"]["refreshTokens"]["create"]
|
6
|
+
arguments = [
|
7
|
+
["grant_type", "authorization_code"],
|
8
|
+
["code", authorization_code],
|
9
|
+
["client_id", Ibanity.client.client_id],
|
10
|
+
["client_secret", Ibanity.client.client_secret],
|
11
|
+
["redirect_uri", redirect_uri]
|
12
|
+
]
|
13
|
+
payload = URI.encode_www_form(arguments)
|
14
|
+
create_by_uri(uri: uri, payload: payload, idempotency_key: idempotency_key)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.delete(token:)
|
18
|
+
uri = Ibanity.isabel_connect_api_schema["oAuth2"]["refreshTokens"]["revoke"]
|
19
|
+
arguments = [
|
20
|
+
["token", token],
|
21
|
+
["client_id", Ibanity.client.client_id],
|
22
|
+
["client_secret", Ibanity.client.client_secret]
|
23
|
+
]
|
24
|
+
payload = URI.encode_www_form(arguments)
|
25
|
+
create_by_uri(uri: uri, payload: payload)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module IsabelConnect
|
3
|
+
class Transaction < Ibanity::BaseResource
|
4
|
+
def self.list(account_id:, access_token:, headers: nil, **query_params)
|
5
|
+
uri = Ibanity.isabel_connect_api_schema["account"]["transactions"].sub("{accountId}", account_id)
|
6
|
+
list_by_uri(uri: uri, query_params: query_params, customer_access_token: access_token, headers: headers)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Ibanity
|
2
|
+
class OAuthResource < OpenStruct
|
3
|
+
def self.create_by_uri(uri:, payload:, idempotency_key: nil)
|
4
|
+
raw_item = Ibanity.client.post(uri: uri, payload: payload, json: false, idempotency_key: idempotency_key)
|
5
|
+
new(raw_item)
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(raw)
|
9
|
+
super(raw)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Sandbox
|
3
|
+
class FinancialInstitutionAccount < Ibanity::BaseResource
|
4
|
+
def self.create(financial_institution_user_id:, financial_institution_id:, idempotency_key: nil, **attributes)
|
5
|
+
path = Ibanity.sandbox_api_schema["financialInstitution"]["financialInstitutionAccounts"]
|
6
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
7
|
+
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
8
|
+
.gsub("{financialInstitutionAccountId}", "")
|
9
|
+
uri = Ibanity.client.build_uri(path)
|
10
|
+
create_by_uri(uri: uri, resource_type: "financialInstitutionAccount", attributes: attributes, idempotency_key: idempotency_key)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.list(financial_institution_id:, financial_institution_user_id:, **query_params)
|
14
|
+
path = Ibanity.sandbox_api_schema["financialInstitution"]["financialInstitutionAccounts"]
|
15
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
16
|
+
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
17
|
+
.gsub("{financialInstitutionAccountId}", "")
|
18
|
+
uri = Ibanity.client.build_uri(path)
|
19
|
+
list_by_uri(uri: uri, query_params: query_params)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.find(id:, financial_institution_user_id:, financial_institution_id:)
|
23
|
+
path = Ibanity.sandbox_api_schema["financialInstitution"]["financialInstitutionAccounts"]
|
24
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
25
|
+
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
26
|
+
.gsub("{financialInstitutionAccountId}", id)
|
27
|
+
uri = Ibanity.client.build_uri(path)
|
28
|
+
find_by_uri(uri: uri)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.delete(id:, financial_institution_user_id:, financial_institution_id:)
|
32
|
+
path = Ibanity.sandbox_api_schema["financialInstitution"]["financialInstitutionAccounts"]
|
33
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
34
|
+
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
35
|
+
.gsub("{financialInstitutionAccountId}", id)
|
36
|
+
uri = Ibanity.client.build_uri(path)
|
37
|
+
destroy_by_uri(uri: uri)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Sandbox
|
3
|
+
class FinancialInstitutionTransaction < Ibanity::BaseResource
|
4
|
+
def self.create(financial_institution_user_id:, financial_institution_id:, financial_institution_account_id:, idempotency_key: nil, **attributes)
|
5
|
+
path = Ibanity.sandbox_api_schema["financialInstitution"]["financialInstitutionAccount"]["financialInstitutionTransactions"]
|
6
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
7
|
+
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
8
|
+
.gsub("{financialInstitutionAccountId}", financial_institution_account_id)
|
9
|
+
.gsub("{financialInstitutionTransactionId}", "")
|
10
|
+
uri = Ibanity.client.build_uri(path)
|
11
|
+
create_by_uri(uri: uri, resource_type: "financialInstitutionTransaction", attributes: attributes, idempotency_key: idempotency_key)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.list(financial_institution_user_id:, financial_institution_id:, financial_institution_account_id:, **query_params)
|
15
|
+
path = Ibanity.sandbox_api_schema["financialInstitution"]["financialInstitutionAccount"]["financialInstitutionTransactions"]
|
16
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
17
|
+
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
18
|
+
.gsub("{financialInstitutionAccountId}", financial_institution_account_id)
|
19
|
+
.gsub("{financialInstitutionTransactionId}", "")
|
20
|
+
uri = Ibanity.client.build_uri(path)
|
21
|
+
list_by_uri(uri: uri, query_params: query_params)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.find(id:, financial_institution_user_id:, financial_institution_id:, financial_institution_account_id:)
|
25
|
+
path = Ibanity.sandbox_api_schema["financialInstitution"]["financialInstitutionAccount"]["financialInstitutionTransactions"]
|
26
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
27
|
+
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
28
|
+
.gsub("{financialInstitutionAccountId}", financial_institution_account_id)
|
29
|
+
.gsub("{financialInstitutionTransactionId}", id)
|
30
|
+
uri = Ibanity.client.build_uri(path)
|
31
|
+
find_by_uri(uri: uri)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.delete(id:, financial_institution_user_id:, financial_institution_id:, financial_institution_account_id:)
|
35
|
+
path = Ibanity.sandbox_api_schema["financialInstitution"]["financialInstitutionAccount"]["financialInstitutionTransactions"]
|
36
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
37
|
+
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
38
|
+
.gsub("{financialInstitutionAccountId}", financial_institution_account_id)
|
39
|
+
.gsub("{financialInstitutionTransactionId}", id)
|
40
|
+
uri = Ibanity.client.build_uri(path)
|
41
|
+
destroy_by_uri(uri: uri)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Sandbox
|
3
|
+
class FinancialInstitutionUser < Ibanity::BaseResource
|
4
|
+
def self.create(idempotency_key: nil, **attributes)
|
5
|
+
path = Ibanity.sandbox_api_schema["financialInstitutionUsers"].gsub("{financialInstitutionUserId}", "")
|
6
|
+
uri = Ibanity.client.build_uri(path)
|
7
|
+
create_by_uri(uri: uri, resource_type: "financialInstitutionUser", attributes: attributes, idempotency_key: idempotency_key)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.list(**query_params)
|
11
|
+
uri = Ibanity.sandbox_api_schema["financialInstitutionUsers"].sub("{financialInstitutionUserId}", "")
|
12
|
+
list_by_uri(uri: uri, query_params: query_params)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.find(id:)
|
16
|
+
uri = Ibanity.sandbox_api_schema["financialInstitutionUsers"].sub("{financialInstitutionUserId}", id)
|
17
|
+
find_by_uri(uri: uri)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.update(id:, idempotency_key: nil, **attributes)
|
21
|
+
path = Ibanity.sandbox_api_schema["financialInstitutionUsers"].sub("{financialInstitutionUserId}", id)
|
22
|
+
uri = Ibanity.client.build_uri(path)
|
23
|
+
update_by_uri(uri: uri, resource_type: "financialInstitutionUser", attributes: attributes, idempotency_key: idempotency_key)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.delete(id:)
|
27
|
+
uri = Ibanity.sandbox_api_schema["financialInstitutionUsers"].sub("{financialInstitutionUserId}", id)
|
28
|
+
destroy_by_uri(uri: uri)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class Account < Ibanity::BaseResource
|
4
|
+
def self.list(financial_institution_id: nil, account_information_access_request_id: nil, customer_access_token:, headers: nil, **query_params)
|
5
|
+
uri = if account_information_access_request_id
|
6
|
+
Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["accountInformationAccessRequest"]["accounts"]
|
7
|
+
.sub("{financialInstitutionId}", financial_institution_id)
|
8
|
+
.sub("{accountInformationAccessRequestId}", account_information_access_request_id)
|
9
|
+
.sub("{accountId}", "")
|
10
|
+
elsif financial_institution_id
|
11
|
+
Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["accounts"].sub("{financialInstitutionId}", financial_institution_id).sub("{accountId}", "")
|
12
|
+
else
|
13
|
+
Ibanity.xs2a_api_schema["customer"]["accounts"].sub("{accountId}", "")
|
14
|
+
end
|
15
|
+
list_by_uri(uri: uri, query_params: query_params, customer_access_token: customer_access_token, headers: headers)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.find(id:, financial_institution_id:, customer_access_token:, headers: nil)
|
19
|
+
uri = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["accounts"]
|
20
|
+
.sub("{financialInstitutionId}", financial_institution_id)
|
21
|
+
.sub("{accountId}", id)
|
22
|
+
find_by_uri(uri: uri, customer_access_token: customer_access_token, headers: headers)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.delete(id:, financial_institution_id:, customer_access_token:)
|
26
|
+
uri = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["accounts"]
|
27
|
+
.sub("{financialInstitutionId}", financial_institution_id)
|
28
|
+
.sub("{accountId}", id)
|
29
|
+
destroy_by_uri(uri: uri, customer_access_token: customer_access_token)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class AccountInformationAccessRequest < Ibanity::BaseResource
|
4
|
+
def self.create_for_financial_institution(financial_institution_id:, customer_access_token:, idempotency_key: nil, meta: nil, **attributes)
|
5
|
+
path = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["accountInformationAccessRequests"]
|
6
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
7
|
+
.gsub("{accountInformationAccessRequestId}", "")
|
8
|
+
uri = Ibanity.client.build_uri(path)
|
9
|
+
create_by_uri(
|
10
|
+
uri: uri,
|
11
|
+
resource_type: "accountInformationAccessRequest",
|
12
|
+
attributes: attributes,
|
13
|
+
customer_access_token: customer_access_token,
|
14
|
+
idempotency_key: idempotency_key,
|
15
|
+
meta: meta
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.find(id:, financial_institution_id:, customer_access_token:)
|
20
|
+
uri = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["accountInformationAccessRequests"]
|
21
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
22
|
+
.gsub("{accountInformationAccessRequestId}", id)
|
23
|
+
find_by_uri(uri: uri, customer_access_token: customer_access_token)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class Customer < ::Ibanity::BaseResource
|
4
|
+
def self.delete(customer_access_token:)
|
5
|
+
uri = Ibanity.xs2a_api_schema["customer"]["self"]
|
6
|
+
destroy_by_uri(uri: uri, customer_access_token: customer_access_token)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class CustomerAccessToken < ::Ibanity::BaseResource
|
4
|
+
def self.create(idempotency_key: nil, **attributes)
|
5
|
+
path = ::Ibanity.xs2a_api_schema["customerAccessTokens"]
|
6
|
+
uri = ::Ibanity.client.build_uri(path)
|
7
|
+
create_by_uri(uri: uri, resource_type: "customerAccessToken", attributes: attributes, idempotency_key: idempotency_key)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class FinancialInstitution < Ibanity::BaseResource
|
4
|
+
def self.list(customer_access_token: nil, **query_params)
|
5
|
+
uri = if customer_access_token.nil?
|
6
|
+
Ibanity.xs2a_api_schema["financialInstitutions"].sub("{financialInstitutionId}", "")
|
7
|
+
else
|
8
|
+
Ibanity.xs2a_api_schema["customer"]["financialInstitutions"].sub("{financialInstitutionId}", "")
|
9
|
+
end
|
10
|
+
list_by_uri(uri: uri, query_params: query_params, customer_access_token: customer_access_token)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.find(id:)
|
14
|
+
uri = Ibanity.xs2a_api_schema["financialInstitutions"].sub("{financialInstitutionId}", id)
|
15
|
+
find_by_uri(uri: uri)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.create(idempotency_key: nil, **attributes)
|
19
|
+
path = Ibanity.sandbox_api_schema["financialInstitutions"].gsub("{financialInstitutionId}", "")
|
20
|
+
uri = Ibanity.client.build_uri(path)
|
21
|
+
create_by_uri(uri: uri, resource_type: "financialInstitution", attributes: attributes, idempotency_key: idempotency_key)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.update(id:, idempotency_key: nil, **attributes)
|
25
|
+
path = Ibanity.sandbox_api_schema["financialInstitutions"].gsub("{financialInstitutionId}", id)
|
26
|
+
uri = Ibanity.client.build_uri(path)
|
27
|
+
update_by_uri(uri: uri, resource_type: "financialInstitution", attributes: attributes, idempotency_key: idempotency_key)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.delete(id:)
|
31
|
+
uri = Ibanity.sandbox_api_schema["financialInstitutions"].gsub("{financialInstitutionId}", id)
|
32
|
+
destroy_by_uri(uri: uri)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class PaymentInitiationRequest < Ibanity::BaseResource
|
4
|
+
def self.create_for_financial_institution(financial_institution_id:, customer_access_token:, idempotency_key: nil, **attributes)
|
5
|
+
path = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["paymentInitiationRequests"]
|
6
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
7
|
+
.sub("{paymentInitiationRequestId}", "")
|
8
|
+
uri = Ibanity.client.build_uri(path)
|
9
|
+
create_by_uri(
|
10
|
+
uri: uri,
|
11
|
+
resource_type: "accountInformationAccessRequest",
|
12
|
+
attributes: attributes,
|
13
|
+
customer_access_token: customer_access_token,
|
14
|
+
idempotency_key: idempotency_key
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.find(id:, financial_institution_id:, customer_access_token:)
|
19
|
+
uri = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["paymentInitiationRequests"]
|
20
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
21
|
+
.sub("{paymentInitiationRequestId}", id)
|
22
|
+
find_by_uri(uri: uri, customer_access_token: customer_access_token)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.delete(id:, financial_institution_id:, customer_access_token:)
|
26
|
+
uri = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["paymentInitiationRequests"]
|
27
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
28
|
+
.sub("{paymentInitiationRequestId}", id)
|
29
|
+
destroy_by_uri(uri: uri, customer_access_token: customer_access_token)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class Synchronization < Ibanity::BaseResource
|
4
|
+
def self.create(customer_access_token:, **attributes)
|
5
|
+
uri = Ibanity.xs2a_api_schema["customer"]["synchronizations"]
|
6
|
+
.sub("{synchronizationId}", "")
|
7
|
+
create_by_uri(uri: uri, resource_type: "synchronization", attributes: attributes, customer_access_token: customer_access_token)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.find(id:, customer_access_token:)
|
11
|
+
uri = Ibanity.xs2a_api_schema["customer"]["synchronizations"]
|
12
|
+
.sub("{synchronizationId}", id)
|
13
|
+
find_by_uri(uri: uri, customer_access_token: customer_access_token)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class Transaction < Ibanity::BaseResource
|
4
|
+
def self.list(financial_institution_id:, account_id:, customer_access_token:, headers: nil, **query_params)
|
5
|
+
uri = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["transactions"]
|
6
|
+
.sub("{financialInstitutionId}", financial_institution_id)
|
7
|
+
.sub("{accountId}", account_id)
|
8
|
+
.sub("{transactionId}", "")
|
9
|
+
list_by_uri(uri: uri, query_params: query_params, customer_access_token: customer_access_token, headers: headers)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.find(id:, financial_institution_id:, account_id:, customer_access_token:)
|
13
|
+
uri = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["transactions"]
|
14
|
+
.sub("{financialInstitutionId}", financial_institution_id)
|
15
|
+
.sub("{accountId}", account_id)
|
16
|
+
.sub("{transactionId}", id)
|
17
|
+
find_by_uri(uri: uri, customer_access_token: customer_access_token)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/ibanity/client.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
module Ibanity
|
2
2
|
class Client
|
3
3
|
|
4
|
-
attr_reader :base_uri, :signature_certificate, :signature_key
|
4
|
+
attr_reader :base_uri, :signature_certificate, :signature_key, :client_id, :client_secret
|
5
5
|
|
6
|
-
def initialize(certificate:, key:, key_passphrase:, signature_certificate: nil, signature_certificate_id: nil, signature_key: nil, signature_key_passphrase: nil, api_scheme: "https", api_host: "api.ibanity.com", api_port: "443", ssl_ca_file: nil)
|
6
|
+
def initialize(certificate:, key:, key_passphrase:, signature_certificate: nil, signature_certificate_id: nil, signature_key: nil, signature_key_passphrase: nil, api_scheme: "https", api_host: "api.ibanity.com", api_port: "443", ssl_ca_file: nil, client_id: "valid_client_id", client_secret: "valid_client_secret")
|
7
|
+
@client_id = client_id
|
8
|
+
@client_secret = client_secret
|
7
9
|
@certificate = OpenSSL::X509::Certificate.new(certificate)
|
8
10
|
@key = OpenSSL::PKey::RSA.new(key, key_passphrase)
|
9
11
|
if signature_certificate
|
@@ -15,24 +17,24 @@ module Ibanity
|
|
15
17
|
@ssl_ca_file = ssl_ca_file
|
16
18
|
end
|
17
19
|
|
18
|
-
def get(uri:, query_params: {}, customer_access_token: nil)
|
19
|
-
headers = build_headers(customer_access_token)
|
20
|
-
execute(method: :get, uri: uri, headers: headers, query_params: query_params)
|
20
|
+
def get(uri:, query_params: {}, customer_access_token: nil, headers: nil, json: true)
|
21
|
+
headers = build_headers(customer_access_token: customer_access_token, extra_headers: headers, json: json)
|
22
|
+
execute(method: :get, uri: uri, headers: headers, query_params: query_params, json: json)
|
21
23
|
end
|
22
24
|
|
23
|
-
def post(uri:, payload:, query_params: {}, customer_access_token: nil, idempotency_key: nil)
|
24
|
-
headers = build_headers(customer_access_token, idempotency_key)
|
25
|
-
execute(method: :post, uri: uri, headers: headers, query_params: query_params, payload: payload)
|
25
|
+
def post(uri:, payload:, query_params: {}, customer_access_token: nil, idempotency_key: nil, json: true, headers: nil)
|
26
|
+
headers = build_headers(customer_access_token: customer_access_token, idempotency_key: idempotency_key, extra_headers: headers, json: json)
|
27
|
+
execute(method: :post, uri: uri, headers: headers, query_params: query_params, payload: payload, json: json)
|
26
28
|
end
|
27
29
|
|
28
|
-
def patch(uri:, payload:, query_params: {}, customer_access_token: nil, idempotency_key: nil)
|
29
|
-
headers = build_headers(customer_access_token, idempotency_key)
|
30
|
-
execute(method: :patch, uri: uri, headers: headers, query_params: query_params, payload: payload)
|
30
|
+
def patch(uri:, payload:, query_params: {}, customer_access_token: nil, idempotency_key: nil, json: true)
|
31
|
+
headers = build_headers(customer_access_token: customer_access_token, idempotency_key: idempotency_key, json: json)
|
32
|
+
execute(method: :patch, uri: uri, headers: headers, query_params: query_params, payload: payload, json: json)
|
31
33
|
end
|
32
34
|
|
33
|
-
def delete(uri:, query_params: {}, customer_access_token: nil)
|
34
|
-
headers = build_headers(customer_access_token)
|
35
|
-
execute(method: :delete, uri: uri, headers: headers, query_params: query_params)
|
35
|
+
def delete(uri:, query_params: {}, customer_access_token: nil, json: true)
|
36
|
+
headers = build_headers(customer_access_token: customer_access_token, json: json)
|
37
|
+
execute(method: :delete, uri: uri, headers: headers, query_params: query_params, json: json)
|
36
38
|
end
|
37
39
|
|
38
40
|
def build_uri(path)
|
@@ -41,17 +43,17 @@ module Ibanity
|
|
41
43
|
|
42
44
|
private
|
43
45
|
|
44
|
-
def execute(method:, uri:, headers:, query_params: {}, payload: nil,
|
46
|
+
def execute(method:, uri:, headers:, query_params: {}, payload: nil, json:)
|
45
47
|
if @signature_certificate
|
46
48
|
signature = Ibanity::HttpSignature.new(
|
47
|
-
certificate:
|
49
|
+
certificate: @signature_certificate,
|
48
50
|
certificate_id: @signature_certificate_id,
|
49
|
-
key:
|
50
|
-
method:
|
51
|
-
uri:
|
52
|
-
query_params:
|
53
|
-
headers:
|
54
|
-
payload: payload
|
51
|
+
key: @signature_key,
|
52
|
+
method: method,
|
53
|
+
uri: uri,
|
54
|
+
query_params: query_params,
|
55
|
+
headers: headers,
|
56
|
+
payload: payload && json ? payload.to_json : payload
|
55
57
|
)
|
56
58
|
headers.merge!(signature.signature_headers)
|
57
59
|
end
|
@@ -59,7 +61,7 @@ module Ibanity
|
|
59
61
|
method: method,
|
60
62
|
url: uri,
|
61
63
|
headers: headers.merge(params: query_params),
|
62
|
-
payload: payload ? payload.to_json :
|
64
|
+
payload: payload && json ? payload.to_json : payload,
|
63
65
|
ssl_client_cert: @certificate,
|
64
66
|
ssl_client_key: @key,
|
65
67
|
ssl_ca_file: @ssl_ca_file
|
@@ -73,16 +75,22 @@ module Ibanity
|
|
73
75
|
end
|
74
76
|
end
|
75
77
|
JSON.parse(raw_response)
|
78
|
+
rescue JSON::ParserError => e
|
79
|
+
return raw_response.body
|
76
80
|
end
|
77
81
|
|
78
|
-
def build_headers(customer_access_token
|
82
|
+
def build_headers(customer_access_token: nil, idempotency_key: nil, extra_headers: nil, json:)
|
79
83
|
headers = {
|
80
|
-
|
81
|
-
accept: :json,
|
84
|
+
accept: :json,
|
82
85
|
}
|
86
|
+
headers[:content_type] = :json if json
|
83
87
|
headers["Authorization"] = "Bearer #{customer_access_token}" unless customer_access_token.nil?
|
84
88
|
headers["Ibanity-Idempotency-Key"] = idempotency_key unless idempotency_key.nil?
|
85
|
-
|
89
|
+
if extra_headers.nil?
|
90
|
+
headers
|
91
|
+
else
|
92
|
+
headers.merge(extra_headers)
|
93
|
+
end
|
86
94
|
end
|
87
95
|
end
|
88
96
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Ibanity
|
2
|
+
class Collection < DelegateClass(Array)
|
3
|
+
attr_accessor :page_limit,
|
4
|
+
:before_cursor,
|
5
|
+
:after_cursor,
|
6
|
+
:offset,
|
7
|
+
:total,
|
8
|
+
:first_link,
|
9
|
+
:next_link,
|
10
|
+
:previous_link,
|
11
|
+
:latest_synchronization,
|
12
|
+
:synchronized_at
|
13
|
+
|
14
|
+
def initialize(
|
15
|
+
klass:,
|
16
|
+
items:,
|
17
|
+
paging:,
|
18
|
+
links:,
|
19
|
+
synchronized_at:,
|
20
|
+
latest_synchronization:
|
21
|
+
)
|
22
|
+
paging ||= {}
|
23
|
+
links ||= {}
|
24
|
+
@klass = klass
|
25
|
+
@page_limit = paging["limit"]
|
26
|
+
@before_cursor = paging["before"]
|
27
|
+
@after_cursor = paging["after"]
|
28
|
+
@offset = paging["offset"]
|
29
|
+
@total = paging["total"]
|
30
|
+
@first_link = links["first"]
|
31
|
+
@next_link = links["next"]
|
32
|
+
@previous_link = links["prev"]
|
33
|
+
@synchronized_at = synchronized_at
|
34
|
+
@latest_synchronization = latest_synchronization
|
35
|
+
super(items)
|
36
|
+
end
|
37
|
+
|
38
|
+
def inspect
|
39
|
+
result = "#<#{self.class.name}"
|
40
|
+
instance_variables.each do |instance_variable|
|
41
|
+
result +=" #{instance_variable}=#{instance_variable_get(instance_variable).inspect}"
|
42
|
+
end
|
43
|
+
result += ">"
|
44
|
+
result
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require "base64"
|
2
|
+
|
1
3
|
module Ibanity
|
2
4
|
class HttpSignature
|
3
5
|
def initialize(certificate:, certificate_id:, key:, method:, uri:, query_params:, headers:, payload:)
|
@@ -13,7 +15,7 @@ module Ibanity
|
|
13
15
|
|
14
16
|
def payload_digest
|
15
17
|
digest = OpenSSL::Digest::SHA512.new
|
16
|
-
string_payload = @payload.nil? ? "" : @payload
|
18
|
+
string_payload = @payload.nil? ? "" : @payload
|
17
19
|
digest.update(string_payload)
|
18
20
|
base64 = Base64.urlsafe_encode64(digest.digest)
|
19
21
|
"SHA-512=#{base64}"
|
data/lib/ibanity/version.rb
CHANGED
data/lib/ibanity.rb
CHANGED
@@ -7,18 +7,29 @@ require "securerandom"
|
|
7
7
|
|
8
8
|
require_relative "ibanity/util"
|
9
9
|
require_relative "ibanity/error"
|
10
|
+
require_relative "ibanity/collection"
|
10
11
|
require_relative "ibanity/client"
|
11
12
|
require_relative "ibanity/http_signature"
|
12
13
|
require_relative "ibanity/api/base_resource"
|
13
|
-
require_relative "ibanity/api/account"
|
14
|
-
require_relative "ibanity/api/transaction"
|
15
|
-
require_relative "ibanity/api/financial_institution"
|
16
|
-
require_relative "ibanity/api/account_information_access_request"
|
17
|
-
require_relative "ibanity/api/
|
18
|
-
require_relative "ibanity/api/
|
19
|
-
require_relative "ibanity/api/
|
20
|
-
require_relative "ibanity/api/
|
21
|
-
require_relative "ibanity/api/
|
14
|
+
require_relative "ibanity/api/xs2a/account"
|
15
|
+
require_relative "ibanity/api/xs2a/transaction"
|
16
|
+
require_relative "ibanity/api/xs2a/financial_institution"
|
17
|
+
require_relative "ibanity/api/xs2a/account_information_access_request"
|
18
|
+
require_relative "ibanity/api/xs2a/customer_access_token"
|
19
|
+
require_relative "ibanity/api/xs2a/customer"
|
20
|
+
require_relative "ibanity/api/xs2a/payment_initiation_request"
|
21
|
+
require_relative "ibanity/api/xs2a/synchronization"
|
22
|
+
require_relative "ibanity/api/o_auth_resource"
|
23
|
+
require_relative "ibanity/api/isabel_connect/account"
|
24
|
+
require_relative "ibanity/api/isabel_connect/balance"
|
25
|
+
require_relative "ibanity/api/isabel_connect/transaction"
|
26
|
+
require_relative "ibanity/api/isabel_connect/account_report"
|
27
|
+
require_relative "ibanity/api/isabel_connect/access_token"
|
28
|
+
require_relative "ibanity/api/isabel_connect/refresh_token"
|
29
|
+
require_relative "ibanity/api/isabel_connect/bulk_payment_initiation_request"
|
30
|
+
require_relative "ibanity/api/sandbox/financial_institution_account"
|
31
|
+
require_relative "ibanity/api/sandbox/financial_institution_transaction"
|
32
|
+
require_relative "ibanity/api/sandbox/financial_institution_user"
|
22
33
|
|
23
34
|
module Ibanity
|
24
35
|
class << self
|
@@ -28,9 +39,11 @@ module Ibanity
|
|
28
39
|
end
|
29
40
|
|
30
41
|
def configure
|
31
|
-
@client
|
32
|
-
@
|
33
|
-
@
|
42
|
+
@client = nil
|
43
|
+
@xs2a_api_schema = nil
|
44
|
+
@isabel_connect_api_schema = nil
|
45
|
+
@sandbox_api_schema = nil
|
46
|
+
@configuration = nil
|
34
47
|
yield configuration
|
35
48
|
end
|
36
49
|
|
@@ -43,6 +56,8 @@ module Ibanity
|
|
43
56
|
:signature_certificate_id,
|
44
57
|
:signature_key,
|
45
58
|
:signature_key_passphrase,
|
59
|
+
:client_id,
|
60
|
+
:client_secret,
|
46
61
|
:api_scheme,
|
47
62
|
:api_host,
|
48
63
|
:api_port,
|
@@ -50,8 +65,16 @@ module Ibanity
|
|
50
65
|
).new
|
51
66
|
end
|
52
67
|
|
53
|
-
def
|
54
|
-
@
|
68
|
+
def xs2a_api_schema
|
69
|
+
@xs2a_api_schema ||= client.get(uri: "#{client.base_uri}/xs2a")["links"]
|
70
|
+
end
|
71
|
+
|
72
|
+
def sandbox_api_schema
|
73
|
+
@sandbox_api_schema ||= client.get(uri: "#{client.base_uri}/sandbox")["links"]
|
74
|
+
end
|
75
|
+
|
76
|
+
def isabel_connect_api_schema
|
77
|
+
@isabel_connect_api_schema ||= client.get(uri: "#{client.base_uri}/isabel-connect")["links"]
|
55
78
|
end
|
56
79
|
|
57
80
|
def respond_to_missing?(method_name, include_private = false)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ibanity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0
|
4
|
+
version: '1.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ibanity
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -67,17 +67,28 @@ files:
|
|
67
67
|
- Rakefile
|
68
68
|
- ibanity.gemspec
|
69
69
|
- lib/ibanity.rb
|
70
|
-
- lib/ibanity/api/account.rb
|
71
|
-
- lib/ibanity/api/account_information_access_request.rb
|
72
70
|
- lib/ibanity/api/base_resource.rb
|
73
|
-
- lib/ibanity/api/
|
74
|
-
- lib/ibanity/api/
|
75
|
-
- lib/ibanity/api/
|
76
|
-
- lib/ibanity/api/
|
77
|
-
- lib/ibanity/api/
|
78
|
-
- lib/ibanity/api/
|
79
|
-
- lib/ibanity/api/transaction.rb
|
71
|
+
- lib/ibanity/api/isabel_connect/access_token.rb
|
72
|
+
- lib/ibanity/api/isabel_connect/account.rb
|
73
|
+
- lib/ibanity/api/isabel_connect/account_report.rb
|
74
|
+
- lib/ibanity/api/isabel_connect/balance.rb
|
75
|
+
- lib/ibanity/api/isabel_connect/bulk_payment_initiation_request.rb
|
76
|
+
- lib/ibanity/api/isabel_connect/refresh_token.rb
|
77
|
+
- lib/ibanity/api/isabel_connect/transaction.rb
|
78
|
+
- lib/ibanity/api/o_auth_resource.rb
|
79
|
+
- lib/ibanity/api/sandbox/financial_institution_account.rb
|
80
|
+
- lib/ibanity/api/sandbox/financial_institution_transaction.rb
|
81
|
+
- lib/ibanity/api/sandbox/financial_institution_user.rb
|
82
|
+
- lib/ibanity/api/xs2a/account.rb
|
83
|
+
- lib/ibanity/api/xs2a/account_information_access_request.rb
|
84
|
+
- lib/ibanity/api/xs2a/customer.rb
|
85
|
+
- lib/ibanity/api/xs2a/customer_access_token.rb
|
86
|
+
- lib/ibanity/api/xs2a/financial_institution.rb
|
87
|
+
- lib/ibanity/api/xs2a/payment_initiation_request.rb
|
88
|
+
- lib/ibanity/api/xs2a/synchronization.rb
|
89
|
+
- lib/ibanity/api/xs2a/transaction.rb
|
80
90
|
- lib/ibanity/client.rb
|
91
|
+
- lib/ibanity/collection.rb
|
81
92
|
- lib/ibanity/error.rb
|
82
93
|
- lib/ibanity/http_signature.rb
|
83
94
|
- lib/ibanity/util.rb
|
data/lib/ibanity/api/account.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
module Ibanity
|
2
|
-
class Account < Ibanity::BaseResource
|
3
|
-
def self.list(financial_institution_id: nil, customer_access_token:, **query_params)
|
4
|
-
uri = if financial_institution_id
|
5
|
-
Ibanity.api_schema["customer"]["financialInstitution"]["accounts"].sub("{financialInstitutionId}", financial_institution_id).sub("{accountId}", "")
|
6
|
-
else
|
7
|
-
Ibanity.api_schema["customer"]["accounts"].sub("{accountId}", "")
|
8
|
-
end
|
9
|
-
|
10
|
-
list_by_uri(uri: uri, query_params: query_params, customer_access_token: customer_access_token)
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.find(id:, financial_institution_id:, customer_access_token:)
|
14
|
-
uri = Ibanity.api_schema["customer"]["financialInstitution"]["accounts"]
|
15
|
-
.sub("{financialInstitutionId}", financial_institution_id)
|
16
|
-
.sub("{accountId}", id)
|
17
|
-
find_by_uri(uri: uri, customer_access_token: customer_access_token)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Ibanity
|
2
|
-
class AccountInformationAccessRequest < Ibanity::BaseResource
|
3
|
-
def self.create_for_financial_institution(financial_institution_id:, customer_access_token:, idempotency_key: nil, **attributes)
|
4
|
-
path = Ibanity.api_schema["customer"]["financialInstitution"]["accountInformationAccessRequests"]
|
5
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
6
|
-
.gsub("{accountInformationAccessRequestId}", "")
|
7
|
-
uri = Ibanity.client.build_uri(path)
|
8
|
-
create_by_uri(
|
9
|
-
uri: uri,
|
10
|
-
resource_type: "accountInformationAccessRequest",
|
11
|
-
attributes: attributes,
|
12
|
-
customer_access_token: customer_access_token,
|
13
|
-
idempotency_key: idempotency_key
|
14
|
-
)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
module Ibanity
|
2
|
-
class CustomerAccessToken < ::Ibanity::BaseResource
|
3
|
-
def self.create(idempotency_key: nil, **attributes)
|
4
|
-
path = ::Ibanity.api_schema["customerAccessTokens"]
|
5
|
-
uri = ::Ibanity.client.build_uri(path)
|
6
|
-
create_by_uri(uri: uri, resource_type: "customerAccessToken", attributes: attributes, idempotency_key: idempotency_key)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module Ibanity
|
2
|
-
class FinancialInstitution < Ibanity::BaseResource
|
3
|
-
def self.list(**query_params)
|
4
|
-
uri = Ibanity.api_schema["financialInstitutions"].sub("{financialInstitutionId}", "")
|
5
|
-
list_by_uri(uri: uri, query_params: query_params)
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.find(id:)
|
9
|
-
uri = Ibanity.api_schema["financialInstitutions"].sub("{financialInstitutionId}", id)
|
10
|
-
find_by_uri(uri: uri)
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.create(idempotency_key: nil, **attributes)
|
14
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitutions"].gsub("{financialInstitutionId}", "")
|
15
|
-
uri = Ibanity.client.build_uri(path)
|
16
|
-
create_by_uri(uri: uri, resource_type: "financialInstitution", attributes: attributes, idempotency_key: idempotency_key)
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.update(id:, idempotency_key: nil, **attributes)
|
20
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitutions"].gsub("{financialInstitutionId}", id)
|
21
|
-
uri = Ibanity.client.build_uri(path)
|
22
|
-
update_by_uri(uri: uri, resource_type: "financialInstitution", attributes: attributes, idempotency_key: idempotency_key)
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.delete(id:)
|
26
|
-
uri = Ibanity.api_schema["sandbox"]["financialInstitutions"].gsub("{financialInstitutionId}", id)
|
27
|
-
destroy_by_uri(uri: uri)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module Ibanity
|
2
|
-
class FinancialInstitutionAccount < Ibanity::BaseResource
|
3
|
-
def self.create(financial_institution_user_id:, financial_institution_id:, idempotency_key: nil, **attributes)
|
4
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitution"]["financialInstitutionAccounts"]
|
5
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
6
|
-
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
7
|
-
.gsub("{financialInstitutionAccountId}", "")
|
8
|
-
uri = Ibanity.client.build_uri(path)
|
9
|
-
create_by_uri(uri: uri, resource_type: "financialInstitutionAccount", attributes: attributes, idempotency_key: idempotency_key)
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.list(financial_institution_id:, financial_institution_user_id:, **query_params)
|
13
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitution"]["financialInstitutionAccounts"]
|
14
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
15
|
-
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
16
|
-
.gsub("{financialInstitutionAccountId}", "")
|
17
|
-
uri = Ibanity.client.build_uri(path)
|
18
|
-
list_by_uri(uri: uri, query_params: query_params)
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.find(id:, financial_institution_user_id:, financial_institution_id:)
|
22
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitution"]["financialInstitutionAccounts"]
|
23
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
24
|
-
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
25
|
-
.gsub("{financialInstitutionAccountId}", id)
|
26
|
-
uri = Ibanity.client.build_uri(path)
|
27
|
-
find_by_uri(uri: uri)
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.delete(id:, financial_institution_user_id:, financial_institution_id:)
|
31
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitution"]["financialInstitutionAccounts"]
|
32
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
33
|
-
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
34
|
-
.gsub("{financialInstitutionAccountId}", id)
|
35
|
-
uri = Ibanity.client.build_uri(path)
|
36
|
-
destroy_by_uri(uri: uri)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
module Ibanity
|
2
|
-
class FinancialInstitutionTransaction < Ibanity::BaseResource
|
3
|
-
def self.create(financial_institution_user_id:, financial_institution_id:, financial_institution_account_id:, idempotency_key: nil, **attributes)
|
4
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitution"]["financialInstitutionAccount"]["financialInstitutionTransactions"]
|
5
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
6
|
-
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
7
|
-
.gsub("{financialInstitutionAccountId}", financial_institution_account_id)
|
8
|
-
.gsub("{financialInstitutionTransactionId}", "")
|
9
|
-
uri = Ibanity.client.build_uri(path)
|
10
|
-
create_by_uri(uri: uri, resource_type: "financialInstitutionTransaction", attributes: attributes, idempotency_key: idempotency_key)
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.list(financial_institution_user_id:, financial_institution_id:, financial_institution_account_id:, **query_params)
|
14
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitution"]["financialInstitutionAccount"]["financialInstitutionTransactions"]
|
15
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
16
|
-
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
17
|
-
.gsub("{financialInstitutionAccountId}", financial_institution_account_id)
|
18
|
-
.gsub("{financialInstitutionTransactionId}", "")
|
19
|
-
uri = Ibanity.client.build_uri(path)
|
20
|
-
list_by_uri(uri: uri, query_params: query_params)
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.find(id:, financial_institution_user_id:, financial_institution_id:, financial_institution_account_id:)
|
24
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitution"]["financialInstitutionAccount"]["financialInstitutionTransactions"]
|
25
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
26
|
-
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
27
|
-
.gsub("{financialInstitutionAccountId}", financial_institution_account_id)
|
28
|
-
.gsub("{financialInstitutionTransactionId}", id)
|
29
|
-
uri = Ibanity.client.build_uri(path)
|
30
|
-
find_by_uri(uri: uri)
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.delete(id:, financial_institution_user_id:, financial_institution_id:, financial_institution_account_id:)
|
34
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitution"]["financialInstitutionAccount"]["financialInstitutionTransactions"]
|
35
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
36
|
-
.gsub("{financialInstitutionUserId}", financial_institution_user_id)
|
37
|
-
.gsub("{financialInstitutionAccountId}", financial_institution_account_id)
|
38
|
-
.gsub("{financialInstitutionTransactionId}", id)
|
39
|
-
uri = Ibanity.client.build_uri(path)
|
40
|
-
destroy_by_uri(uri: uri)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module Ibanity
|
2
|
-
class FinancialInstitutionUser < Ibanity::BaseResource
|
3
|
-
def self.create(idempotency_key: nil, **attributes)
|
4
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitutionUsers"].gsub("{financialInstitutionUserId}", "")
|
5
|
-
uri = Ibanity.client.build_uri(path)
|
6
|
-
create_by_uri(uri: uri, resource_type: "financialInstitutionUser", attributes: attributes, idempotency_key: idempotency_key)
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.list(**query_params)
|
10
|
-
uri = Ibanity.api_schema["sandbox"]["financialInstitutionUsers"].sub("{financialInstitutionUserId}", "")
|
11
|
-
list_by_uri(uri: uri, query_params: query_params)
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.find(id:)
|
15
|
-
uri = Ibanity.api_schema["sandbox"]["financialInstitutionUsers"].sub("{financialInstitutionUserId}", id)
|
16
|
-
find_by_uri(uri: uri)
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.update(id:, idempotency_key: nil, **attributes)
|
20
|
-
path = Ibanity.api_schema["sandbox"]["financialInstitutionUsers"].sub("{financialInstitutionUserId}", id)
|
21
|
-
uri = Ibanity.client.build_uri(path)
|
22
|
-
update_by_uri(uri: uri, resource_type: "financialInstitutionUser", attributes: attributes, idempotency_key: idempotency_key)
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.delete(id:)
|
26
|
-
uri = Ibanity.api_schema["sandbox"]["financialInstitutionUsers"].sub("{financialInstitutionUserId}", id)
|
27
|
-
destroy_by_uri(uri: uri)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Ibanity
|
2
|
-
class PaymentInitiationRequest < Ibanity::BaseResource
|
3
|
-
def self.create_for_financial_institution(financial_institution_id:, customer_access_token:, idempotency_key: nil, **attributes)
|
4
|
-
path = Ibanity.api_schema["customer"]["financialInstitution"]["paymentInitiationRequests"]
|
5
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
6
|
-
.sub("{paymentInitiationRequestId}", "")
|
7
|
-
uri = Ibanity.client.build_uri(path)
|
8
|
-
create_by_uri(
|
9
|
-
uri: uri,
|
10
|
-
resource_type: "accountInformationAccessRequest",
|
11
|
-
attributes: attributes,
|
12
|
-
customer_access_token: customer_access_token,
|
13
|
-
idempotency_key: idempotency_key
|
14
|
-
)
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.find(id:, financial_institution_id:, customer_access_token:)
|
18
|
-
uri = Ibanity.api_schema["customer"]["financialInstitution"]["paymentInitiationRequests"]
|
19
|
-
.gsub("{financialInstitutionId}", financial_institution_id)
|
20
|
-
.sub("{paymentInitiationRequestId}", id)
|
21
|
-
find_by_uri(uri: uri, customer_access_token: customer_access_token)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Ibanity
|
2
|
-
class Transaction < Ibanity::BaseResource
|
3
|
-
def self.list(financial_institution_id:, account_id:, customer_access_token:, **query_params)
|
4
|
-
uri = Ibanity.api_schema["customer"]["financialInstitution"]["transactions"]
|
5
|
-
.sub("{financialInstitutionId}", financial_institution_id)
|
6
|
-
.sub("{accountId}", account_id)
|
7
|
-
.sub("{transactionId}", "")
|
8
|
-
list_by_uri(uri: uri, query_params: query_params, customer_access_token: customer_access_token)
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.find(id:, financial_institution_id:, account_id:, customer_access_token:)
|
12
|
-
uri = Ibanity.api_schema["customer"]["financialInstitution"]["transactions"]
|
13
|
-
.sub("{financialInstitutionId}", financial_institution_id)
|
14
|
-
.sub("{accountId}", account_id)
|
15
|
-
.sub("{transactionId}", id)
|
16
|
-
find_by_uri(uri: uri, customer_access_token: customer_access_token)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|