lib/fintecture/faraday/authentication/connection.rb in fintecture-0.5.1 vs lib/fintecture/faraday/authentication/connection.rb in fintecture-0.6.0
- old
+ new
@@ -1,140 +1,140 @@
-# frozen_string_literal: true
-
-require 'base64'
-require 'faraday'
-require 'uri'
-require 'fintecture/utils/crypto'
-require 'fintecture/utils/date'
-
-module Fintecture
- module Faraday
- module Authentication
- class Connection
- class << self
- def connection(url)
- ::Faraday.new(url: url) do |faraday|
- faraday.request :url_encoded
- faraday.adapter ::Faraday.default_adapter
- end
- end
-
- def post(url:, req_body: nil, client: nil, custom_content_type: nil, bearer: nil, secure_headers: false, additional_headers: nil, disableAuthorization: nil)
- @client = client
- conn = connection(url)
- res = conn.post do |req|
- req.options.params_encoder = Faraday::DisabledEncoder
- req.headers = req_headers(custom_content_type, bearer, secure_headers, additional_headers, disableAuthorization,
- method: 'post', body: req_body, url: url)
- req.body = req_body
- end
-
- !res.success? ? Fintecture::ApiException.error(res) : res
- end
-
- def get(url:, req_body: nil, client: nil, custom_content_type: nil, bearer: nil, secure_headers: false, additional_headers: nil, disableAuthorization: nil)
- @client = client
- conn = connection(url)
-
- res = conn.get do |req|
- req.options.params_encoder = Faraday::DisabledEncoder
- req.headers = req_headers(custom_content_type, bearer, secure_headers, additional_headers, disableAuthorization,
- method: 'get', url: url)
- req.body = req_body
- end
-
- !res.success? ? Fintecture::ApiException.error(res) : res
- end
-
- def delete(url:, req_body: nil, client: nil, custom_content_type: nil, bearer: nil, secure_headers: false, additional_headers: nil, disableAuthorization: nil)
- @client = client
- conn = connection(url)
-
- res = conn.delete do |req|
- req.options.params_encoder = Faraday::DisabledEncoder
- req.headers = req_headers(custom_content_type, bearer, secure_headers, additional_headers, disableAuthorization,
- method: 'delete', body: req_body, url: url)
- req.body = req_body
- end
-
- !res.success? ? Fintecture::ApiException.error(res) : res
- end
-
- def req_headers(custom_content_type, bearer, secure_headers, additional_headers, disableAuthorization, url:, method: '', body: {})
- if !additional_headers.nil? && !additional_headers.is_a?(Hash)
- raise Fintecture::ValidationException, 'additional_headers must be an object'
- end
-
- client_token = Base64.strict_encode64("#{@client.app_id}:#{@client.app_secret}")
-
- headers = {
- 'Accept' => 'application/json',
- 'User-Agent' => "Fintecture Ruby SDK v #{Fintecture::VERSION}",
- 'Content-Type' => custom_content_type || 'application/x-www-form-urlencoded'
- }
- headers['Authorization'] = bearer || "Basic #{client_token}" unless disableAuthorization
- headers = headers.merge(additional_headers) unless additional_headers.nil?
- headers.merge(secure_headers ? req_secure_headers(body: body, url: url, method: method) : {})
- end
-
- def req_secure_headers(body: {}, url: '', method: '')
- payload = (body.instance_of?(String) ? body : body.to_s)
- path_name = URI(url).path
- search_params = URI(url).query
-
- request_target = search_params ? "#{method.downcase} #{path_name}?#{search_params}" : "#{method.downcase} #{path_name}"
- date = Fintecture::Utils::Date.header_time.to_s
- digest = load_digest(payload)
- x_request_id = Fintecture::Utils::Crypto.generate_uuid
-
- headers = {
- 'Date' => date,
- 'X-Request-ID' => x_request_id
- }.merge(payload ? digest : {})
-
- headers['Signature'] =
- Fintecture::Utils::Crypto.create_signature_header(
- { '(request-target)' => request_target }.merge(headers), @client
- )
- headers
- end
-
- def load_digest(payload)
- { 'Digest' => "SHA-256=#{Fintecture::Utils::Crypto.hash_base64(payload)}" }
- end
-
- end
- end
- end
-
- module DisabledEncoder
- class << self
- extend Forwardable
- def_delegators :'Faraday::Utils', :escape, :unescape
- end
-
- def self.encode(params)
- return nil if params.nil?
-
- newParams = {}
- params.each do |key, value|
- if value.instance_of?(Hash)
- value.each do |subkey, subvalue|
- newParams["#{key}[#{subkey}]"] = subvalue
- end
- else
- newParams[key] = value
- end
- end
-
- newParams.map { |key, value| "#{key}=#{value}" }.join('&').to_s
- end
-
- class << self
- attr_accessor :sort_params
- end
-
- # Useful default for OAuth and caching.
- @sort_params = true
- end
- end
-end
+# frozen_string_literal: true
+
+require 'base64'
+require 'faraday'
+require 'uri'
+require 'fintecture/utils/crypto'
+require 'fintecture/utils/date'
+
+module Fintecture
+ module Faraday
+ module Authentication
+ class Connection
+ class << self
+ def connection(url)
+ ::Faraday.new(url: url) do |faraday|
+ faraday.request :url_encoded
+ faraday.adapter ::Faraday.default_adapter
+ end
+ end
+
+ def post(url:, req_body: nil, client: nil, custom_content_type: nil, bearer: nil, secure_headers: false, additional_headers: nil, disableAuthorization: nil)
+ @client = client
+ conn = connection(url)
+ res = conn.post do |req|
+ req.options.params_encoder = Faraday::DisabledEncoder
+ req.headers = req_headers(custom_content_type, bearer, secure_headers, additional_headers, disableAuthorization,
+ method: 'post', body: req_body, url: url)
+ req.body = req_body
+ end
+
+ !res.success? ? Fintecture::ApiException.error(res) : res
+ end
+
+ def get(url:, req_body: nil, client: nil, custom_content_type: nil, bearer: nil, secure_headers: false, additional_headers: nil, disableAuthorization: nil)
+ @client = client
+ conn = connection(url)
+
+ res = conn.get do |req|
+ req.options.params_encoder = Faraday::DisabledEncoder
+ req.headers = req_headers(custom_content_type, bearer, secure_headers, additional_headers, disableAuthorization,
+ method: 'get', url: url)
+ req.body = req_body
+ end
+
+ !res.success? ? Fintecture::ApiException.error(res) : res
+ end
+
+ def delete(url:, req_body: nil, client: nil, custom_content_type: nil, bearer: nil, secure_headers: false, additional_headers: nil, disableAuthorization: nil)
+ @client = client
+ conn = connection(url)
+
+ res = conn.delete do |req|
+ req.options.params_encoder = Faraday::DisabledEncoder
+ req.headers = req_headers(custom_content_type, bearer, secure_headers, additional_headers, disableAuthorization,
+ method: 'delete', body: req_body, url: url)
+ req.body = req_body
+ end
+
+ !res.success? ? Fintecture::ApiException.error(res) : res
+ end
+
+ def req_headers(custom_content_type, bearer, secure_headers, additional_headers, disableAuthorization, url:, method: '', body: {})
+ if !additional_headers.nil? && !additional_headers.is_a?(Hash)
+ raise Fintecture::ValidationException, 'additional_headers must be an object'
+ end
+
+ client_token = Base64.strict_encode64("#{@client.app_id}:#{@client.app_secret}")
+
+ headers = {
+ 'Accept' => 'application/json',
+ 'User-Agent' => "Fintecture Ruby SDK v #{Fintecture::VERSION}",
+ 'Content-Type' => custom_content_type || 'application/x-www-form-urlencoded'
+ }
+ headers['Authorization'] = bearer || "Basic #{client_token}" unless disableAuthorization
+ headers = headers.merge(additional_headers) unless additional_headers.nil?
+ headers.merge(secure_headers ? req_secure_headers(body: body, url: url, method: method) : {})
+ end
+
+ def req_secure_headers(body: {}, url: '', method: '')
+ payload = (body.instance_of?(String) ? body : body.to_s)
+ path_name = URI(url).path
+ search_params = URI(url).query
+
+ request_target = search_params ? "#{method.downcase} #{path_name}?#{search_params}" : "#{method.downcase} #{path_name}"
+ date = Fintecture::Utils::Date.header_time.to_s
+ digest = load_digest(payload)
+ x_request_id = Fintecture::Utils::Crypto.generate_uuid
+
+ headers = {
+ 'Date' => date,
+ 'X-Request-ID' => x_request_id
+ }.merge(payload ? digest : {})
+
+ headers['Signature'] =
+ Fintecture::Utils::Crypto.create_signature_header(
+ { '(request-target)' => request_target }.merge(headers), @client
+ )
+ headers
+ end
+
+ def load_digest(payload)
+ { 'Digest' => "SHA-256=#{Fintecture::Utils::Crypto.hash_base64(payload)}" }
+ end
+
+ end
+ end
+ end
+
+ module DisabledEncoder
+ class << self
+ extend Forwardable
+ def_delegators :'Faraday::Utils', :escape, :unescape
+ end
+
+ def self.encode(params)
+ return nil if params.nil?
+
+ newParams = {}
+ params.each do |key, value|
+ if value.instance_of?(Hash)
+ value.each do |subkey, subvalue|
+ newParams["#{key}[#{subkey}]"] = subvalue
+ end
+ else
+ newParams[key] = value
+ end
+ end
+
+ newParams.map { |key, value| "#{key}=#{value}" }.join('&').to_s
+ end
+
+ class << self
+ attr_accessor :sort_params
+ end
+
+ # Useful default for OAuth and caching.
+ @sort_params = true
+ end
+ end
+end