ibanity 0.5 → 1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rspec +1 -0
- data/.travis.yml +20 -0
- data/CHANGELOG.md +20 -0
- data/README.md +2 -0
- data/ibanity.gemspec +1 -2
- data/lib/ibanity.rb +68 -14
- data/lib/ibanity/api/base_resource.rb +45 -15
- data/lib/ibanity/api/consent/consent.rb +41 -0
- data/lib/ibanity/api/consent/processing_operation.rb +37 -0
- 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/intraday_transaction.rb +10 -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 +19 -0
- data/lib/ibanity/api/ponto_connect/account.rb +15 -0
- data/lib/ibanity/api/ponto_connect/financial_institution.rb +15 -0
- data/lib/ibanity/api/ponto_connect/payment.rb +20 -0
- data/lib/ibanity/api/ponto_connect/sandbox/financial_institution_account.rb +21 -0
- data/lib/ibanity/api/ponto_connect/sandbox/financial_institution_transaction.rb +31 -0
- data/lib/ibanity/api/ponto_connect/synchronization.rb +15 -0
- data/lib/ibanity/api/ponto_connect/token.rb +53 -0
- data/lib/ibanity/api/ponto_connect/transaction.rb +15 -0
- data/lib/ibanity/api/ponto_connect/usage.rb +10 -0
- data/lib/ibanity/api/ponto_connect/user_info.rb +10 -0
- data/lib/ibanity/api/sandbox/financial_institution_account.rb +41 -0
- data/lib/ibanity/api/sandbox/financial_institution_holding.rb +45 -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/account_information_access_request_authorization.rb +21 -0
- data/lib/ibanity/api/xs2a/bulk_payment_initiation_request.rb +33 -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/holding.rb +21 -0
- data/lib/ibanity/api/xs2a/payment_initiation_request.rb +33 -0
- data/lib/ibanity/api/xs2a/payment_initiation_request_authorization.rb +21 -0
- data/lib/ibanity/api/xs2a/periodic_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 +41 -30
- data/lib/ibanity/collection.rb +47 -0
- data/lib/ibanity/error.rb +9 -5
- data/lib/ibanity/http_signature.rb +4 -2
- data/lib/ibanity/util.rb +11 -4
- data/lib/ibanity/version.rb +1 -1
- data/spec/lib/ibanity/util_spec.rb +89 -0
- data/spec/spec_helper.rb +100 -0
- metadata +52 -30
- 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
@@ -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,21 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class AccountInformationAccessRequestAuthorization < Ibanity::BaseResource
|
4
|
+
def self.create(financial_institution_id:, account_information_access_request_id:, customer_access_token:, idempotency_key: nil, meta: nil, **attributes)
|
5
|
+
path = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["accountInformationAccessRequest"]["authorizations"]
|
6
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
7
|
+
.gsub("{accountInformationAccessRequestId}", account_information_access_request_id)
|
8
|
+
.gsub("{authorizationId}", "")
|
9
|
+
uri = Ibanity.client.build_uri(path)
|
10
|
+
create_by_uri(
|
11
|
+
uri: uri,
|
12
|
+
resource_type: "authorization",
|
13
|
+
attributes: attributes,
|
14
|
+
customer_access_token: customer_access_token,
|
15
|
+
idempotency_key: idempotency_key,
|
16
|
+
meta: meta
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class BulkPaymentInitiationRequest < 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"]["bulkPaymentInitiationRequests"]
|
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: "bulkPaymentInitiationRequest",
|
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"]["bulkPaymentInitiationRequests"]
|
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"]["bulkPaymentInitiationRequests"]
|
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,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,21 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class Holding < 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"]["holdings"]
|
6
|
+
.sub("{financialInstitutionId}", financial_institution_id)
|
7
|
+
.sub("{accountId}", account_id)
|
8
|
+
.sub("{holdingId}", "")
|
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"]["holdings"]
|
14
|
+
.sub("{financialInstitutionId}", financial_institution_id)
|
15
|
+
.sub("{accountId}", account_id)
|
16
|
+
.sub("{holdingId}", id)
|
17
|
+
find_by_uri(uri: uri, customer_access_token: customer_access_token)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
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,21 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class PaymentInitiationRequestAuthorization < Ibanity::BaseResource
|
4
|
+
def self.create(financial_institution_id:, payment_initiation_request_id:, customer_access_token:, idempotency_key: nil, meta: nil, **attributes)
|
5
|
+
path = Ibanity.xs2a_api_schema["customer"]["financialInstitution"]["paymentInitiationRequest"]["authorizations"]
|
6
|
+
.gsub("{financialInstitutionId}", financial_institution_id)
|
7
|
+
.gsub("{paymentInitiationRequestId}", payment_initiation_request_id)
|
8
|
+
.gsub("{authorizationId}", "")
|
9
|
+
uri = Ibanity.client.build_uri(path)
|
10
|
+
create_by_uri(
|
11
|
+
uri: uri,
|
12
|
+
resource_type: "authorization",
|
13
|
+
attributes: attributes,
|
14
|
+
customer_access_token: customer_access_token,
|
15
|
+
idempotency_key: idempotency_key,
|
16
|
+
meta: meta
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Ibanity
|
2
|
+
module Xs2a
|
3
|
+
class PeriodicPaymentInitiationRequest < 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"]["periodicPaymentInitiationRequests"]
|
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: "periodicPaymentInitiationRequest",
|
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"]["periodicPaymentInitiationRequests"]
|
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"]["periodicPaymentInitiationRequests"]
|
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,11 +1,15 @@
|
|
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, :isabel_connect_client_id, :isabel_connect_client_secret, :ponto_connect_client_id, :ponto_connect_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)
|
7
|
-
@
|
8
|
-
@
|
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, isabel_connect_client_id: "valid_client_id", isabel_connect_client_secret: "valid_client_secret", ponto_connect_client_id: nil, ponto_connect_client_secret: nil)
|
7
|
+
@isabel_connect_client_id = isabel_connect_client_id
|
8
|
+
@isabel_connect_client_secret = isabel_connect_client_secret
|
9
|
+
@ponto_connect_client_id = ponto_connect_client_id
|
10
|
+
@ponto_connect_client_secret = ponto_connect_client_secret
|
11
|
+
@certificate = OpenSSL::X509::Certificate.new(certificate)
|
12
|
+
@key = OpenSSL::PKey::RSA.new(key, key_passphrase)
|
9
13
|
if signature_certificate
|
10
14
|
@signature_certificate = OpenSSL::X509::Certificate.new(signature_certificate)
|
11
15
|
@signature_certificate_id = signature_certificate_id
|
@@ -15,24 +19,24 @@ module Ibanity
|
|
15
19
|
@ssl_ca_file = ssl_ca_file
|
16
20
|
end
|
17
21
|
|
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)
|
22
|
+
def get(uri:, query_params: {}, customer_access_token: nil, headers: nil, json: true)
|
23
|
+
headers = build_headers(customer_access_token: customer_access_token, extra_headers: headers, json: json)
|
24
|
+
execute(method: :get, uri: uri, headers: headers, query_params: query_params, json: json)
|
21
25
|
end
|
22
26
|
|
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)
|
27
|
+
def post(uri:, payload:, query_params: {}, customer_access_token: nil, idempotency_key: nil, json: true, headers: nil)
|
28
|
+
headers = build_headers(customer_access_token: customer_access_token, idempotency_key: idempotency_key, extra_headers: headers, json: json)
|
29
|
+
execute(method: :post, uri: uri, headers: headers, query_params: query_params, payload: payload, json: json)
|
26
30
|
end
|
27
31
|
|
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)
|
32
|
+
def patch(uri:, payload:, query_params: {}, customer_access_token: nil, idempotency_key: nil, json: true)
|
33
|
+
headers = build_headers(customer_access_token: customer_access_token, idempotency_key: idempotency_key, json: json)
|
34
|
+
execute(method: :patch, uri: uri, headers: headers, query_params: query_params, payload: payload, json: json)
|
31
35
|
end
|
32
36
|
|
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)
|
37
|
+
def delete(uri:, query_params: {}, customer_access_token: nil, json: true)
|
38
|
+
headers = build_headers(customer_access_token: customer_access_token, json: json)
|
39
|
+
execute(method: :delete, uri: uri, headers: headers, query_params: query_params, json: json)
|
36
40
|
end
|
37
41
|
|
38
42
|
def build_uri(path)
|
@@ -41,17 +45,17 @@ module Ibanity
|
|
41
45
|
|
42
46
|
private
|
43
47
|
|
44
|
-
def execute(method:, uri:, headers:, query_params: {}, payload: nil,
|
48
|
+
def execute(method:, uri:, headers:, query_params: {}, payload: nil, json:)
|
45
49
|
if @signature_certificate
|
46
50
|
signature = Ibanity::HttpSignature.new(
|
47
|
-
certificate:
|
51
|
+
certificate: @signature_certificate,
|
48
52
|
certificate_id: @signature_certificate_id,
|
49
|
-
key:
|
50
|
-
method:
|
51
|
-
uri:
|
52
|
-
query_params:
|
53
|
-
headers:
|
54
|
-
payload: payload
|
53
|
+
key: @signature_key,
|
54
|
+
method: method,
|
55
|
+
uri: uri,
|
56
|
+
query_params: query_params,
|
57
|
+
headers: headers,
|
58
|
+
payload: payload && json ? payload.to_json : payload
|
55
59
|
)
|
56
60
|
headers.merge!(signature.signature_headers)
|
57
61
|
end
|
@@ -59,30 +63,37 @@ module Ibanity
|
|
59
63
|
method: method,
|
60
64
|
url: uri,
|
61
65
|
headers: headers.merge(params: query_params),
|
62
|
-
payload: payload ? payload.to_json :
|
66
|
+
payload: payload && json ? payload.to_json : payload,
|
63
67
|
ssl_client_cert: @certificate,
|
64
68
|
ssl_client_key: @key,
|
65
69
|
ssl_ca_file: @ssl_ca_file
|
66
70
|
}
|
67
71
|
raw_response = RestClient::Request.execute(query) do |response, request, result, &block|
|
68
72
|
if response.code >= 400
|
73
|
+
ibanity_request_id = response.headers[:ibanity_request_id]
|
69
74
|
body = JSON.parse(response.body)
|
70
|
-
raise Ibanity::Error.new(body["errors"]), "Ibanity request failed."
|
75
|
+
raise Ibanity::Error.new(body["errors"] || body, ibanity_request_id), "Ibanity request failed."
|
71
76
|
else
|
72
77
|
response.return!(&block)
|
73
78
|
end
|
74
79
|
end
|
75
80
|
JSON.parse(raw_response)
|
81
|
+
rescue JSON::ParserError => e
|
82
|
+
return raw_response.body
|
76
83
|
end
|
77
84
|
|
78
|
-
def build_headers(customer_access_token
|
85
|
+
def build_headers(customer_access_token: nil, idempotency_key: nil, extra_headers: nil, json:)
|
79
86
|
headers = {
|
80
|
-
|
81
|
-
accept: :json,
|
87
|
+
accept: :json,
|
82
88
|
}
|
89
|
+
headers[:content_type] = :json if json
|
83
90
|
headers["Authorization"] = "Bearer #{customer_access_token}" unless customer_access_token.nil?
|
84
91
|
headers["Ibanity-Idempotency-Key"] = idempotency_key unless idempotency_key.nil?
|
85
|
-
|
92
|
+
if extra_headers.nil?
|
93
|
+
headers
|
94
|
+
else
|
95
|
+
headers.merge(extra_headers)
|
96
|
+
end
|
86
97
|
end
|
87
98
|
end
|
88
99
|
end
|