ibanity 0.5 → 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ibanity/api/base_resource.rb +44 -14
  3. data/lib/ibanity/api/isabel_connect/access_token.rb +17 -0
  4. data/lib/ibanity/api/isabel_connect/account.rb +15 -0
  5. data/lib/ibanity/api/isabel_connect/account_report.rb +15 -0
  6. data/lib/ibanity/api/isabel_connect/balance.rb +11 -0
  7. data/lib/ibanity/api/isabel_connect/bulk_payment_initiation_request.rb +25 -0
  8. data/lib/ibanity/api/isabel_connect/refresh_token.rb +29 -0
  9. data/lib/ibanity/api/isabel_connect/transaction.rb +10 -0
  10. data/lib/ibanity/api/o_auth_resource.rb +12 -0
  11. data/lib/ibanity/api/sandbox/financial_institution_account.rb +41 -0
  12. data/lib/ibanity/api/sandbox/financial_institution_transaction.rb +45 -0
  13. data/lib/ibanity/api/sandbox/financial_institution_user.rb +32 -0
  14. data/lib/ibanity/api/xs2a/account.rb +33 -0
  15. data/lib/ibanity/api/xs2a/account_information_access_request.rb +27 -0
  16. data/lib/ibanity/api/xs2a/customer.rb +10 -0
  17. data/lib/ibanity/api/xs2a/customer_access_token.rb +11 -0
  18. data/lib/ibanity/api/xs2a/financial_institution.rb +36 -0
  19. data/lib/ibanity/api/xs2a/payment_initiation_request.rb +33 -0
  20. data/lib/ibanity/api/xs2a/synchronization.rb +17 -0
  21. data/lib/ibanity/api/xs2a/transaction.rb +21 -0
  22. data/lib/ibanity/client.rb +35 -27
  23. data/lib/ibanity/collection.rb +47 -0
  24. data/lib/ibanity/http_signature.rb +3 -1
  25. data/lib/ibanity/version.rb +1 -1
  26. data/lib/ibanity.rb +37 -14
  27. metadata +22 -11
  28. data/lib/ibanity/api/account.rb +0 -20
  29. data/lib/ibanity/api/account_information_access_request.rb +0 -17
  30. data/lib/ibanity/api/customer_access_token.rb +0 -9
  31. data/lib/ibanity/api/financial_institution.rb +0 -30
  32. data/lib/ibanity/api/financial_institution_account.rb +0 -39
  33. data/lib/ibanity/api/financial_institution_transaction.rb +0 -43
  34. data/lib/ibanity/api/financial_institution_user.rb +0 -30
  35. data/lib/ibanity/api/payment_initiation_request.rb +0 -24
  36. data/lib/ibanity/api/transaction.rb +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7bb35a7ddf46f86fac8fd94a13c3886e1c741830
4
- data.tar.gz: 13f8adfa22c4eac45c2ed181fc69fe9769a398d5
3
+ metadata.gz: 0e37b469bd141088935b144204e2522c25f28657
4
+ data.tar.gz: 5c3206720d78551e9de27dc7d33c6d8986ff9a0d
5
5
  SHA512:
6
- metadata.gz: 3f2560d787ff0695c7e535ab986694f4be6d5d1b30e3d6dc644e802aa5626f0a95fe1d308b1729a09dc3c4adae96c1866071ace55ef4a04e50baaa0db0df907c
7
- data.tar.gz: cc0b94298184ee1bd3eb18f61ce5e0ba944c5c580e7b45f8fb52287c5807f677b0ff0e59a4d4a3754635b7e18f91c2423b098d998fcc33238b07009345bfd758
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
- raw_items = Ibanity.client.get(uri: uri, query_params: query_params, customer_access_token: customer_access_token)
16
- raw_items["data"].map do |raw_item|
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 = Ibanity.const_get(Ibanity::Util.camelize(key))
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 = Ibanity.const_get(Ibanity::Util.camelize(singular_key))
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
@@ -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, idempotency_key: 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: @signature_certificate,
49
+ certificate: @signature_certificate,
48
50
  certificate_id: @signature_certificate_id,
49
- key: @signature_key,
50
- method: method,
51
- uri: uri,
52
- query_params: query_params,
53
- headers: 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 : nil,
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 = nil, idempotency_key = nil)
82
+ def build_headers(customer_access_token: nil, idempotency_key: nil, extra_headers: nil, json:)
79
83
  headers = {
80
- content_type: :json,
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
- headers
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.to_json
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}"
@@ -1,3 +1,3 @@
1
1
  module Ibanity
2
- VERSION = "0.5"
2
+ VERSION = "1.0"
3
3
  end
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/financial_institution_account"
18
- require_relative "ibanity/api/financial_institution_transaction"
19
- require_relative "ibanity/api/financial_institution_user"
20
- require_relative "ibanity/api/customer_access_token"
21
- require_relative "ibanity/api/payment_initiation_request"
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 = nil
32
- @api_schema = nil
33
- @configuration = nil
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 api_schema
54
- @api_schema ||= client.get(uri: client.base_uri)["links"]
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.5'
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: 2018-05-30 00:00:00.000000000 Z
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/customer_access_token.rb
74
- - lib/ibanity/api/financial_institution.rb
75
- - lib/ibanity/api/financial_institution_account.rb
76
- - lib/ibanity/api/financial_institution_transaction.rb
77
- - lib/ibanity/api/financial_institution_user.rb
78
- - lib/ibanity/api/payment_initiation_request.rb
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
@@ -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