nordigen_ob_client 0.0.1

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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/nordigen_ob_client.rb +197 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a34a748612b3bf2535faffb6c6d43bad91ff0b94ae75fa1725881814fbee6674
4
+ data.tar.gz: 2f9e5560099bfd39663deeff53a8f4d17b2a6dc9af4a4f985785ac331559df53
5
+ SHA512:
6
+ metadata.gz: 06f56f9153e732e8cd7c4daeaff5809beb9c5b5e570a974a025b32c705e82abceb18863ce7aae6cf293518e46d686e1865af38a1f646132512484fba1952c22f
7
+ data.tar.gz: a04466070b4a9c9332a95098f422f254a4b3e5683a2d073dda48b7d6e57519bfe8e9b5b1c9391b64a4b04672d88495616f208497b4012e3b70dad0bc26c47547
@@ -0,0 +1,197 @@
1
+ require 'json'
2
+ require 'net/http'
3
+ require 'rest-client'
4
+
5
+ class NordigenOBClient
6
+
7
+ def initialize
8
+ end
9
+
10
+ #############################################################################
11
+ #
12
+ # => Name: get_access_token
13
+ #
14
+ # => Description: Retrieve the access token that will be used to access all
15
+ # other endpoints in Nordigen's backend.
16
+ #
17
+ # => Parameters: secret_id: The Secret ID part of the credentials,
18
+ # provided by Nordigen.
19
+ #
20
+ # secret_key: The Secret Key part of the credentials,
21
+ # provided by Nordigen.
22
+ #
23
+ # => Returns: The access token
24
+ #
25
+ #############################################################################
26
+ def get_access_token secret_id, secret_key
27
+ access_token_params = {
28
+ "secret_id" => secret_id,
29
+ "secret_key" => secret_key
30
+ }.to_json
31
+
32
+ response_json = RestClient.post("https://ob.nordigen.com/api/v2/token/new/",
33
+ access_token_params,
34
+ {content_type: :json, accept: :json})
35
+ response = JSON.parse(response_json.body)
36
+ @access_token = response["access"]
37
+ @access_token
38
+ end
39
+
40
+ #############################################################################
41
+ #
42
+ # => Name: get_banks_by_country
43
+ #
44
+ # => Description: Returns a list of the available institutions by country,
45
+ # including
46
+ #
47
+ # => Parameters: country: The selected country, in ISO 3166 format.
48
+ # Supported countries are EEA countries.
49
+ #
50
+ #
51
+ # => Returns: The list of supported institutions in the selected country.
52
+ #
53
+ #############################################################################
54
+ def get_banks_by_country country
55
+ request_header = {
56
+ content_type: :json,
57
+ accept: :json,
58
+ authorization: "Bearer #{@access_token}"
59
+ }
60
+
61
+ response = RestClient.get(
62
+ "https://ob.nordigen.com/api/v2/institutions/?country=#{country}",
63
+ headers=request_header)
64
+
65
+ available_banks = JSON.parse(response.body,
66
+ :external_encoding => 'iso-8859-1')
67
+ available_banks
68
+ end
69
+
70
+
71
+ #############################################################################
72
+ #
73
+ # => Name: list_accounts
74
+ #
75
+ # => Description: Return a list of the available accounts connected to the
76
+ # given user account.
77
+ #
78
+ # => Parameters: requisition_id: The id of the requisition (bank login)
79
+ # for which the parameters will be parsed.
80
+ #
81
+ #
82
+ # => Returns: The list of available accounts.
83
+ #
84
+ #############################################################################
85
+ def list_accounts requisition_id
86
+ request_header = {
87
+ content_type: :json,
88
+ accept: :json,
89
+ authorization: "Bearer #{@access_token}"
90
+ }
91
+
92
+ response = RestClient.get(
93
+ "https://ob.nordigen.com/api/v2/requisitions/#{requisition_id}",
94
+ headers=request_header)
95
+ accounts = JSON.parse(response.body)
96
+ accounts
97
+ end
98
+
99
+ def get_account_details account_id
100
+ request_header = {
101
+ content_type: :json,
102
+ accept: :json,
103
+ authorization: "Bearer #{@access_token}"
104
+ }
105
+
106
+ response = RestClient.get(
107
+ "https://ob.nordigen.com/api/v2/accounts/#{account_id}/details",
108
+ headers=request_header)
109
+ accounts = JSON.parse(response.body)
110
+ accounts
111
+ end
112
+
113
+
114
+ def get_account_balances account_id
115
+ request_header = {
116
+ content_type: :json,
117
+ accept: :json,
118
+ authorization: "Bearer #{@access_token}"
119
+ }
120
+
121
+ response = RestClient.get(
122
+ "https://ob.nordigen.com/api/v2/accounts/#{account_id}/balances",
123
+ headers=request_header)
124
+ accounts = JSON.parse(response.body)
125
+ accounts
126
+ end
127
+
128
+
129
+ def get_account_overview account_id
130
+ request_header = {
131
+ content_type: :json,
132
+ accept: :json,
133
+ authorization: "Bearer #{@access_token}"
134
+ }
135
+
136
+ response = RestClient.get(
137
+ "https://ob.nordigen.com/api/v2/accounts/#{account_id}",
138
+ headers=request_header)
139
+ accounts = JSON.parse(response.body)
140
+ accounts
141
+ end
142
+
143
+
144
+ def get_account_transactions account_id
145
+ request_header = {
146
+ content_type: :json,
147
+ accept: :json,
148
+ authorization: "Bearer #{@access_token}"
149
+ }
150
+
151
+ response = RestClient.get(
152
+ "https://ob.nordigen.com/api/v2/accounts/#{account_id}/transactions",
153
+ headers=request_header)
154
+ accounts = JSON.parse(response.body)
155
+ accounts
156
+ end
157
+
158
+
159
+
160
+ def create_requisition redirect_url, selected_bank_id, reference
161
+ request_body = {
162
+ "redirect" => redirect_url,
163
+ "institution_id" => selected_bank_id,
164
+ "user_language" => "EN",
165
+ "reference" => reference
166
+ }.to_json
167
+
168
+ request_header = {
169
+ content_type: :json,
170
+ accept: :json,
171
+ authorization: "Bearer #{@access_token}"
172
+ }
173
+
174
+ response = RestClient.post(
175
+ "https://ob.nordigen.com/api/v2/requisitions/",
176
+ request_body,
177
+ headers=request_header)
178
+ JSON.parse(response.body)
179
+ end
180
+
181
+
182
+ def delete_requisition requisition_id
183
+ request_header = {
184
+ content_type: :json,
185
+ accept: :json,
186
+ authorization: "Bearer #{@access_token}"
187
+ }
188
+
189
+ response = RestClient.delete(
190
+ "https://ob.nordigen.com/api/v2/requisitions/#{requisition_id}",
191
+ request_body,
192
+ headers=request_header)
193
+ JSON.parse(response.body)
194
+ response
195
+ end
196
+
197
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nordigen_ob_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Angelos Kapsimanis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-08-31 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A Ruby client for Nordigen's Open Banking v2.0 API. Look at https://nordigen.com/en/account_information_documenation/api-documention/overview/
14
+ for more details.
15
+ email: angelos@neffoss.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/nordigen_ob_client.rb
21
+ homepage: https://github.com/neffoss/nordigen_ob_client
22
+ licenses:
23
+ - Apache-2.0
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubygems_version: 3.2.32
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Nordigen's Open Banking v2.0 API client
44
+ test_files: []