ibanity 0.5 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
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