fintecture 0.5.1 → 0.6.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.
- checksums.yaml +4 -4
- data/.gitignore +18 -17
- data/.rspec +3 -3
- data/.travis.yml +7 -7
- data/CODE_OF_CONDUCT.md +74 -74
- data/Gemfile +8 -8
- data/Gemfile.lock +59 -59
- data/LICENSE.txt +674 -674
- data/README.md +405 -408
- data/Rakefile +8 -8
- data/bin/console +15 -15
- data/bin/setup +8 -8
- data/exemples/ais.rb +53 -53
- data/exemples/config_ais.json +7 -7
- data/exemples/config_pis.json +5 -5
- data/exemples/pis.rb +148 -148
- data/exemples/ressources.rb +23 -23
- data/fintecture.gemspec +44 -44
- data/lib/fintecture/ais_client.rb +94 -94
- data/lib/fintecture/api/ais/account_holders.rb +61 -61
- data/lib/fintecture/api/ais/accounts.rb +63 -63
- data/lib/fintecture/api/ais/authorize.rb +72 -72
- data/lib/fintecture/api/ais/authorize_decoupled.rb +68 -68
- data/lib/fintecture/api/ais/connect.rb +65 -65
- data/lib/fintecture/api/ais/delete_customer.rb +53 -53
- data/lib/fintecture/api/ais/transactions.rb +64 -64
- data/lib/fintecture/api/auth/authentication.rb +78 -78
- data/lib/fintecture/api/pis/connect.rb +84 -77
- data/lib/fintecture/api/pis/initiate.rb +52 -52
- data/lib/fintecture/api/pis/payments.rb +54 -48
- data/lib/fintecture/api/pis/refund.rb +67 -67
- data/lib/fintecture/api/pis/request_to_pay.rb +63 -63
- data/lib/fintecture/api/pis/settlements.rb +50 -50
- data/lib/fintecture/api/ressources/applications.rb +57 -57
- data/lib/fintecture/api/ressources/providers.rb +61 -61
- data/lib/fintecture/api/ressources/test_accounts.rb +60 -60
- data/lib/fintecture/base_url.rb +26 -26
- data/lib/fintecture/endpoints/ais.rb +17 -17
- data/lib/fintecture/endpoints/authentication.rb +13 -13
- data/lib/fintecture/endpoints/pis.rb +16 -16
- data/lib/fintecture/endpoints/ressources.rb +13 -13
- data/lib/fintecture/exceptions.rb +48 -48
- data/lib/fintecture/faraday/authentication/connection.rb +140 -140
- data/lib/fintecture/pis_client.rb +100 -100
- data/lib/fintecture/utils/constants.rb +11 -11
- data/lib/fintecture/utils/crypto.rb +75 -75
- data/lib/fintecture/utils/date.rb +15 -15
- data/lib/fintecture/utils/validation.rb +32 -32
- data/lib/fintecture/version.rb +5 -5
- data/lib/fintecture.rb +65 -65
- metadata +12 -6
@@ -1,94 +1,94 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'fintecture/api/ais/connect'
|
4
|
-
require 'fintecture/api/ais/accounts'
|
5
|
-
require 'fintecture/api/ais/transactions'
|
6
|
-
require 'fintecture/api/ais/account_holders'
|
7
|
-
require 'fintecture/api/ais/delete_customer'
|
8
|
-
require 'fintecture/api/ais/authorize'
|
9
|
-
require 'fintecture/api/ais/authorize_decoupled'
|
10
|
-
|
11
|
-
module Fintecture
|
12
|
-
class AisClient
|
13
|
-
@environment = 'sandbox'
|
14
|
-
@environments = %w[local sandbox production].freeze
|
15
|
-
|
16
|
-
def initialize(config)
|
17
|
-
@app_id = config[:app_id]
|
18
|
-
@app_secret = config[:app_secret]
|
19
|
-
@private_key = config[:private_key]
|
20
|
-
|
21
|
-
environment = config[:environment].downcase
|
22
|
-
unless environment.include?(environment)
|
23
|
-
raise "#{environment} not a valid environment, options are [#{environment.join(', ')}]"
|
24
|
-
end
|
25
|
-
|
26
|
-
@environment = environment
|
27
|
-
end
|
28
|
-
|
29
|
-
# Getters
|
30
|
-
attr_reader :app_id, :app_secret, :private_key, :environment, :token, :token_expires_in, :refresh_token
|
31
|
-
|
32
|
-
# Methodes
|
33
|
-
def connect(state, redirect_uri, scope = nil)
|
34
|
-
res = Fintecture::Ais::Connect.generate self, state, redirect_uri, scope
|
35
|
-
|
36
|
-
JSON.parse res.body
|
37
|
-
end
|
38
|
-
|
39
|
-
def generate_token(auth_code)
|
40
|
-
res = Fintecture::Authentication.get_access_token self, auth_code
|
41
|
-
body = JSON.parse res.body
|
42
|
-
@token = body['access_token']
|
43
|
-
@token_expires_in = body['expires_in']
|
44
|
-
@refresh_token = body['refresh_token']
|
45
|
-
|
46
|
-
body
|
47
|
-
end
|
48
|
-
|
49
|
-
def generate_refresh_token(refresh_token = nil)
|
50
|
-
res = Fintecture::Authentication.refresh_token self, (refresh_token || @refresh_token)
|
51
|
-
body = JSON.parse res.body
|
52
|
-
@token = body['access_token']
|
53
|
-
|
54
|
-
body
|
55
|
-
end
|
56
|
-
|
57
|
-
def accounts(customer_id:, account_id: nil, remove_nulls: nil, withBalances: nil)
|
58
|
-
res = Fintecture::Ais::Accounts.get self, customer_id, account_id, remove_nulls, withBalances
|
59
|
-
|
60
|
-
JSON.parse res.body
|
61
|
-
end
|
62
|
-
|
63
|
-
def transactions(customer_id:, account_id:, remove_nulls: nil, convert_dates: nil, filters: nil)
|
64
|
-
res = Fintecture::Ais::Transactions.get self, customer_id, account_id, remove_nulls, convert_dates, filters
|
65
|
-
|
66
|
-
JSON.parse res.body
|
67
|
-
end
|
68
|
-
|
69
|
-
def account_holders(customer_id:, remove_nulls: nil)
|
70
|
-
res = Fintecture::Ais::AccountHolders.get self, customer_id, remove_nulls
|
71
|
-
|
72
|
-
JSON.parse res.body
|
73
|
-
end
|
74
|
-
|
75
|
-
def delete_customer(customer_id:)
|
76
|
-
res = Fintecture::Ais::DeleteCustomer.delete self, customer_id
|
77
|
-
|
78
|
-
JSON.parse res.body
|
79
|
-
end
|
80
|
-
|
81
|
-
def authorize(provider_id:, redirect_uri:, app_id_auth: false, state: nil, x_psu_id: nil, x_psu_ip_address: nil)
|
82
|
-
res = Fintecture::Ais::Authorize.get self, app_id_auth, provider_id, redirect_uri, state, x_psu_id,
|
83
|
-
x_psu_ip_address
|
84
|
-
|
85
|
-
JSON.parse res.body
|
86
|
-
end
|
87
|
-
|
88
|
-
def authorize_decoupled(provider_id:, polling_id:, app_id_auth: false)
|
89
|
-
res = Fintecture::Ais::AuthorizeDecoupled.get self, app_id_auth, provider_id, polling_id
|
90
|
-
|
91
|
-
JSON.parse res.body
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'fintecture/api/ais/connect'
|
4
|
+
require 'fintecture/api/ais/accounts'
|
5
|
+
require 'fintecture/api/ais/transactions'
|
6
|
+
require 'fintecture/api/ais/account_holders'
|
7
|
+
require 'fintecture/api/ais/delete_customer'
|
8
|
+
require 'fintecture/api/ais/authorize'
|
9
|
+
require 'fintecture/api/ais/authorize_decoupled'
|
10
|
+
|
11
|
+
module Fintecture
|
12
|
+
class AisClient
|
13
|
+
@environment = 'sandbox'
|
14
|
+
@environments = %w[local sandbox production].freeze
|
15
|
+
|
16
|
+
def initialize(config)
|
17
|
+
@app_id = config[:app_id]
|
18
|
+
@app_secret = config[:app_secret]
|
19
|
+
@private_key = config[:private_key]
|
20
|
+
|
21
|
+
environment = config[:environment].downcase
|
22
|
+
unless environment.include?(environment)
|
23
|
+
raise "#{environment} not a valid environment, options are [#{environment.join(', ')}]"
|
24
|
+
end
|
25
|
+
|
26
|
+
@environment = environment
|
27
|
+
end
|
28
|
+
|
29
|
+
# Getters
|
30
|
+
attr_reader :app_id, :app_secret, :private_key, :environment, :token, :token_expires_in, :refresh_token
|
31
|
+
|
32
|
+
# Methodes
|
33
|
+
def connect(state, redirect_uri, scope = nil)
|
34
|
+
res = Fintecture::Ais::Connect.generate self, state, redirect_uri, scope
|
35
|
+
|
36
|
+
JSON.parse res.body
|
37
|
+
end
|
38
|
+
|
39
|
+
def generate_token(auth_code)
|
40
|
+
res = Fintecture::Authentication.get_access_token self, auth_code
|
41
|
+
body = JSON.parse res.body
|
42
|
+
@token = body['access_token']
|
43
|
+
@token_expires_in = body['expires_in']
|
44
|
+
@refresh_token = body['refresh_token']
|
45
|
+
|
46
|
+
body
|
47
|
+
end
|
48
|
+
|
49
|
+
def generate_refresh_token(refresh_token = nil)
|
50
|
+
res = Fintecture::Authentication.refresh_token self, (refresh_token || @refresh_token)
|
51
|
+
body = JSON.parse res.body
|
52
|
+
@token = body['access_token']
|
53
|
+
|
54
|
+
body
|
55
|
+
end
|
56
|
+
|
57
|
+
def accounts(customer_id:, account_id: nil, remove_nulls: nil, withBalances: nil)
|
58
|
+
res = Fintecture::Ais::Accounts.get self, customer_id, account_id, remove_nulls, withBalances
|
59
|
+
|
60
|
+
JSON.parse res.body
|
61
|
+
end
|
62
|
+
|
63
|
+
def transactions(customer_id:, account_id:, remove_nulls: nil, convert_dates: nil, filters: nil)
|
64
|
+
res = Fintecture::Ais::Transactions.get self, customer_id, account_id, remove_nulls, convert_dates, filters
|
65
|
+
|
66
|
+
JSON.parse res.body
|
67
|
+
end
|
68
|
+
|
69
|
+
def account_holders(customer_id:, remove_nulls: nil)
|
70
|
+
res = Fintecture::Ais::AccountHolders.get self, customer_id, remove_nulls
|
71
|
+
|
72
|
+
JSON.parse res.body
|
73
|
+
end
|
74
|
+
|
75
|
+
def delete_customer(customer_id:)
|
76
|
+
res = Fintecture::Ais::DeleteCustomer.delete self, customer_id
|
77
|
+
|
78
|
+
JSON.parse res.body
|
79
|
+
end
|
80
|
+
|
81
|
+
def authorize(provider_id:, redirect_uri:, app_id_auth: false, state: nil, x_psu_id: nil, x_psu_ip_address: nil)
|
82
|
+
res = Fintecture::Ais::Authorize.get self, app_id_auth, provider_id, redirect_uri, state, x_psu_id,
|
83
|
+
x_psu_ip_address
|
84
|
+
|
85
|
+
JSON.parse res.body
|
86
|
+
end
|
87
|
+
|
88
|
+
def authorize_decoupled(provider_id:, polling_id:, app_id_auth: false)
|
89
|
+
res = Fintecture::Ais::AuthorizeDecoupled.get self, app_id_auth, provider_id, polling_id
|
90
|
+
|
91
|
+
JSON.parse res.body
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -1,61 +1,61 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'base64'
|
4
|
-
require 'json'
|
5
|
-
require 'faraday'
|
6
|
-
require 'fintecture/utils/validation'
|
7
|
-
require 'fintecture/exceptions'
|
8
|
-
require 'fintecture/utils/date'
|
9
|
-
require 'fintecture/utils/constants'
|
10
|
-
|
11
|
-
module Fintecture
|
12
|
-
module Ais
|
13
|
-
class AccountHolders
|
14
|
-
class << self
|
15
|
-
# ------------ PUBLIC METHOD ------------
|
16
|
-
def get(client, customer_id, remove_nulls)
|
17
|
-
@client = client
|
18
|
-
|
19
|
-
# Do the request
|
20
|
-
_request customer_id, remove_nulls
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
# ------------ REQUEST ------------
|
26
|
-
def _request(customer_id, remove_nulls)
|
27
|
-
# Get the url request
|
28
|
-
url = _endpoint customer_id
|
29
|
-
|
30
|
-
# Build uri params
|
31
|
-
query_string = ''
|
32
|
-
if remove_nulls
|
33
|
-
params = {}
|
34
|
-
params['remove_nulls'] = remove_nulls if remove_nulls
|
35
|
-
query_string = "?#{params.map { |key, value| "#{key}=#{value}" }.join('&')}"
|
36
|
-
end
|
37
|
-
|
38
|
-
# Do connect request
|
39
|
-
Fintecture::Faraday::Authentication::Connection.get(
|
40
|
-
url: url + query_string,
|
41
|
-
client: @client,
|
42
|
-
custom_content_type: 'application/json',
|
43
|
-
bearer: "Bearer #{@client.token}",
|
44
|
-
secure_headers: true
|
45
|
-
)
|
46
|
-
end
|
47
|
-
|
48
|
-
# ------------ API ENDPOINT ------------
|
49
|
-
def _endpoint(customer_id)
|
50
|
-
"#{_api_base_url}/#{Fintecture::Api::Endpoints::Ais::ACCOUNTHOLDERS}/#{customer_id}/accountholders"
|
51
|
-
end
|
52
|
-
|
53
|
-
# ------------ BASE URL ------------
|
54
|
-
def _api_base_url
|
55
|
-
Fintecture::Api::BaseUrl::FINTECTURE_API_URL[@client.environment.to_sym]
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'base64'
|
4
|
+
require 'json'
|
5
|
+
require 'faraday'
|
6
|
+
require 'fintecture/utils/validation'
|
7
|
+
require 'fintecture/exceptions'
|
8
|
+
require 'fintecture/utils/date'
|
9
|
+
require 'fintecture/utils/constants'
|
10
|
+
|
11
|
+
module Fintecture
|
12
|
+
module Ais
|
13
|
+
class AccountHolders
|
14
|
+
class << self
|
15
|
+
# ------------ PUBLIC METHOD ------------
|
16
|
+
def get(client, customer_id, remove_nulls)
|
17
|
+
@client = client
|
18
|
+
|
19
|
+
# Do the request
|
20
|
+
_request customer_id, remove_nulls
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
# ------------ REQUEST ------------
|
26
|
+
def _request(customer_id, remove_nulls)
|
27
|
+
# Get the url request
|
28
|
+
url = _endpoint customer_id
|
29
|
+
|
30
|
+
# Build uri params
|
31
|
+
query_string = ''
|
32
|
+
if remove_nulls
|
33
|
+
params = {}
|
34
|
+
params['remove_nulls'] = remove_nulls if remove_nulls
|
35
|
+
query_string = "?#{params.map { |key, value| "#{key}=#{value}" }.join('&')}"
|
36
|
+
end
|
37
|
+
|
38
|
+
# Do connect request
|
39
|
+
Fintecture::Faraday::Authentication::Connection.get(
|
40
|
+
url: url + query_string,
|
41
|
+
client: @client,
|
42
|
+
custom_content_type: 'application/json',
|
43
|
+
bearer: "Bearer #{@client.token}",
|
44
|
+
secure_headers: true
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
# ------------ API ENDPOINT ------------
|
49
|
+
def _endpoint(customer_id)
|
50
|
+
"#{_api_base_url}/#{Fintecture::Api::Endpoints::Ais::ACCOUNTHOLDERS}/#{customer_id}/accountholders"
|
51
|
+
end
|
52
|
+
|
53
|
+
# ------------ BASE URL ------------
|
54
|
+
def _api_base_url
|
55
|
+
Fintecture::Api::BaseUrl::FINTECTURE_API_URL[@client.environment.to_sym]
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -1,63 +1,63 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'base64'
|
4
|
-
require 'json'
|
5
|
-
require 'faraday'
|
6
|
-
require 'fintecture/utils/validation'
|
7
|
-
require 'fintecture/exceptions'
|
8
|
-
require 'fintecture/utils/date'
|
9
|
-
require 'fintecture/utils/constants'
|
10
|
-
|
11
|
-
module Fintecture
|
12
|
-
module Ais
|
13
|
-
class Accounts
|
14
|
-
class << self
|
15
|
-
# ------------ PUBLIC METHOD ------------
|
16
|
-
def get(client, customer_id, account_id, remove_nulls, withBalances)
|
17
|
-
@client = client
|
18
|
-
|
19
|
-
# Do the request
|
20
|
-
_request customer_id, account_id, remove_nulls, withBalances
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
# ------------ REQUEST ------------
|
26
|
-
def _request(customer_id, account_id, remove_nulls, withBalances)
|
27
|
-
# Get the url request
|
28
|
-
url = _endpoint customer_id, account_id
|
29
|
-
|
30
|
-
# Build uri params
|
31
|
-
query_string = ''
|
32
|
-
if remove_nulls || withBalances
|
33
|
-
params = {}
|
34
|
-
params['remove_nulls'] = remove_nulls if remove_nulls
|
35
|
-
params['withBalances'] = withBalances if withBalances
|
36
|
-
|
37
|
-
query_string = "?#{params.map { |key, value| "#{key}=#{value}" }.join('&')}"
|
38
|
-
end
|
39
|
-
|
40
|
-
# Do connect request
|
41
|
-
Fintecture::Faraday::Authentication::Connection.get(
|
42
|
-
url: url + query_string,
|
43
|
-
client: @client,
|
44
|
-
custom_content_type: 'application/json',
|
45
|
-
bearer: "Bearer #{@client.token}",
|
46
|
-
secure_headers: true
|
47
|
-
)
|
48
|
-
end
|
49
|
-
|
50
|
-
# ------------ API ENDPOINT ------------
|
51
|
-
def _endpoint(customer_id, account_id)
|
52
|
-
"#{_api_base_url}/#{Fintecture::Api::Endpoints::Ais::ACCOUNTS}/#{customer_id}/accounts/#{account_id || ''}"
|
53
|
-
end
|
54
|
-
|
55
|
-
# ------------ BASE URL ------------
|
56
|
-
def _api_base_url
|
57
|
-
Fintecture::Api::BaseUrl::FINTECTURE_API_URL[@client.environment.to_sym]
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'base64'
|
4
|
+
require 'json'
|
5
|
+
require 'faraday'
|
6
|
+
require 'fintecture/utils/validation'
|
7
|
+
require 'fintecture/exceptions'
|
8
|
+
require 'fintecture/utils/date'
|
9
|
+
require 'fintecture/utils/constants'
|
10
|
+
|
11
|
+
module Fintecture
|
12
|
+
module Ais
|
13
|
+
class Accounts
|
14
|
+
class << self
|
15
|
+
# ------------ PUBLIC METHOD ------------
|
16
|
+
def get(client, customer_id, account_id, remove_nulls, withBalances)
|
17
|
+
@client = client
|
18
|
+
|
19
|
+
# Do the request
|
20
|
+
_request customer_id, account_id, remove_nulls, withBalances
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
# ------------ REQUEST ------------
|
26
|
+
def _request(customer_id, account_id, remove_nulls, withBalances)
|
27
|
+
# Get the url request
|
28
|
+
url = _endpoint customer_id, account_id
|
29
|
+
|
30
|
+
# Build uri params
|
31
|
+
query_string = ''
|
32
|
+
if remove_nulls || withBalances
|
33
|
+
params = {}
|
34
|
+
params['remove_nulls'] = remove_nulls if remove_nulls
|
35
|
+
params['withBalances'] = withBalances if withBalances
|
36
|
+
|
37
|
+
query_string = "?#{params.map { |key, value| "#{key}=#{value}" }.join('&')}"
|
38
|
+
end
|
39
|
+
|
40
|
+
# Do connect request
|
41
|
+
Fintecture::Faraday::Authentication::Connection.get(
|
42
|
+
url: url + query_string,
|
43
|
+
client: @client,
|
44
|
+
custom_content_type: 'application/json',
|
45
|
+
bearer: "Bearer #{@client.token}",
|
46
|
+
secure_headers: true
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
# ------------ API ENDPOINT ------------
|
51
|
+
def _endpoint(customer_id, account_id)
|
52
|
+
"#{_api_base_url}/#{Fintecture::Api::Endpoints::Ais::ACCOUNTS}/#{customer_id}/accounts/#{account_id || ''}"
|
53
|
+
end
|
54
|
+
|
55
|
+
# ------------ BASE URL ------------
|
56
|
+
def _api_base_url
|
57
|
+
Fintecture::Api::BaseUrl::FINTECTURE_API_URL[@client.environment.to_sym]
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -1,72 +1,72 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'base64'
|
4
|
-
require 'json'
|
5
|
-
require 'faraday'
|
6
|
-
require 'fintecture/utils/validation'
|
7
|
-
require 'fintecture/exceptions'
|
8
|
-
require 'fintecture/utils/date'
|
9
|
-
require 'fintecture/utils/constants'
|
10
|
-
|
11
|
-
module Fintecture
|
12
|
-
module Ais
|
13
|
-
class Authorize
|
14
|
-
class << self
|
15
|
-
# ------------ PUBLIC METHOD ------------
|
16
|
-
def get(client, app_id_auth, provider_id, redirect_uri, state, x_psu_id, x_psu_ip_address)
|
17
|
-
@client = client
|
18
|
-
|
19
|
-
# Do the request
|
20
|
-
_request app_id_auth, provider_id, redirect_uri, state, x_psu_id, x_psu_ip_address
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
# ------------ REQUEST ------------
|
26
|
-
def _request(app_id_auth, provider_id, redirect_uri, state, x_psu_id, x_psu_ip_address)
|
27
|
-
# Get the url request
|
28
|
-
url = _endpoint provider_id
|
29
|
-
|
30
|
-
# Build uri params
|
31
|
-
query_string = ''
|
32
|
-
|
33
|
-
params = {}
|
34
|
-
params['response_type'] = 'code' if app_id_auth
|
35
|
-
params['redirect_uri'] = redirect_uri if redirect_uri
|
36
|
-
params['state'] = state if state
|
37
|
-
params['model'] = 'redirect'
|
38
|
-
|
39
|
-
query_string = "?#{params.map { |key, value| "#{key}=#{value}" }.join('&')}"
|
40
|
-
|
41
|
-
# Build additional headers
|
42
|
-
additional_headers = {}
|
43
|
-
additional_headers['app_id'] = @client.app_id if app_id_auth
|
44
|
-
additional_headers['x-psu-id'] = x_psu_id if x_psu_id
|
45
|
-
additional_headers['x-psu-ip-address'] = x_psu_ip_address if x_psu_ip_address
|
46
|
-
|
47
|
-
# Do connect request
|
48
|
-
Fintecture::Faraday::Authentication::Connection.get(
|
49
|
-
url: url + query_string,
|
50
|
-
client: @client,
|
51
|
-
custom_content_type: 'application/json',
|
52
|
-
bearer: "Bearer #{@client.token}",
|
53
|
-
secure_headers: true,
|
54
|
-
additional_headers: additional_headers,
|
55
|
-
disableAuthorization: app_id_auth ? true : false
|
56
|
-
)
|
57
|
-
end
|
58
|
-
|
59
|
-
# ------------ API ENDPOINT ------------
|
60
|
-
def _endpoint(provider_id)
|
61
|
-
"#{_api_base_url}/#{Fintecture::Api::Endpoints::Ais::AUTHORIZE}/#{provider_id}/authorize"
|
62
|
-
end
|
63
|
-
|
64
|
-
# ------------ BASE URL ------------
|
65
|
-
def _api_base_url
|
66
|
-
Fintecture::Api::BaseUrl::FINTECTURE_API_URL[@client.environment.to_sym]
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'base64'
|
4
|
+
require 'json'
|
5
|
+
require 'faraday'
|
6
|
+
require 'fintecture/utils/validation'
|
7
|
+
require 'fintecture/exceptions'
|
8
|
+
require 'fintecture/utils/date'
|
9
|
+
require 'fintecture/utils/constants'
|
10
|
+
|
11
|
+
module Fintecture
|
12
|
+
module Ais
|
13
|
+
class Authorize
|
14
|
+
class << self
|
15
|
+
# ------------ PUBLIC METHOD ------------
|
16
|
+
def get(client, app_id_auth, provider_id, redirect_uri, state, x_psu_id, x_psu_ip_address)
|
17
|
+
@client = client
|
18
|
+
|
19
|
+
# Do the request
|
20
|
+
_request app_id_auth, provider_id, redirect_uri, state, x_psu_id, x_psu_ip_address
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
# ------------ REQUEST ------------
|
26
|
+
def _request(app_id_auth, provider_id, redirect_uri, state, x_psu_id, x_psu_ip_address)
|
27
|
+
# Get the url request
|
28
|
+
url = _endpoint provider_id
|
29
|
+
|
30
|
+
# Build uri params
|
31
|
+
query_string = ''
|
32
|
+
|
33
|
+
params = {}
|
34
|
+
params['response_type'] = 'code' if app_id_auth
|
35
|
+
params['redirect_uri'] = redirect_uri if redirect_uri
|
36
|
+
params['state'] = state if state
|
37
|
+
params['model'] = 'redirect'
|
38
|
+
|
39
|
+
query_string = "?#{params.map { |key, value| "#{key}=#{value}" }.join('&')}"
|
40
|
+
|
41
|
+
# Build additional headers
|
42
|
+
additional_headers = {}
|
43
|
+
additional_headers['app_id'] = @client.app_id if app_id_auth
|
44
|
+
additional_headers['x-psu-id'] = x_psu_id if x_psu_id
|
45
|
+
additional_headers['x-psu-ip-address'] = x_psu_ip_address if x_psu_ip_address
|
46
|
+
|
47
|
+
# Do connect request
|
48
|
+
Fintecture::Faraday::Authentication::Connection.get(
|
49
|
+
url: url + query_string,
|
50
|
+
client: @client,
|
51
|
+
custom_content_type: 'application/json',
|
52
|
+
bearer: "Bearer #{@client.token}",
|
53
|
+
secure_headers: true,
|
54
|
+
additional_headers: additional_headers,
|
55
|
+
disableAuthorization: app_id_auth ? true : false
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
59
|
+
# ------------ API ENDPOINT ------------
|
60
|
+
def _endpoint(provider_id)
|
61
|
+
"#{_api_base_url}/#{Fintecture::Api::Endpoints::Ais::AUTHORIZE}/#{provider_id}/authorize"
|
62
|
+
end
|
63
|
+
|
64
|
+
# ------------ BASE URL ------------
|
65
|
+
def _api_base_url
|
66
|
+
Fintecture::Api::BaseUrl::FINTECTURE_API_URL[@client.environment.to_sym]
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|