class Onfido::Configuration
Constants
- REGIONS
Attributes
Defines the access token (Bearer) used with OAuth2.
Defines a Proc used to fetch or refresh access tokens (Bearer) used with OAuth2. Overrides the access_token
if set @return [Proc]
Defines API keys used with API Key authentications.
@return [Hash] key: parameter name, value: parameter value (API key)
@example parameter name is “api_key”, API key is “xxx” (e.g. “api_key=xxx” in query string)
config.api_key['api_key'] = 'xxx'
Defines API key prefixes used with API Key authentications.
@return [Hash] key: parameter name, value: API key prefix
@example parameter name is “Authorization”, API key prefix is “Token” (e.g. “Authorization: Token xxx” in headers)
config.api_key_prefix['api_key'] = 'Token'
Defines url base path
Set this to false to skip client side validation in the operation. Default to true. @return [true, false]
Set this to enable/disable debugging. When enabled (set to true), HTTP request/response details will be logged with ‘logger.debug` (see the `logger` attribute). Default to false.
@return [true, false]
Defines url host
Set this to ignore operation servers for the API client. This is useful when you need to send requests to a different server than the one specified in the OpenAPI document. Will default to the base url defined in the spec but can be overridden by setting ‘scheme`, `host`, `base_path` directly. Default to false. @return [true, false]
Defines the logger used for debugging. Default to ‘Rails.logger` (when in Rails) or logging to STDOUT.
@return [#debug]
Set this to customize parameters encoder of array parameter. Default to nil. Faraday uses NestedParamsEncoder when nil.
@see The params_encoder
option of Faraday. Related source code: github.com/lostisland/faraday/tree/main/lib/faraday/encoders
Defines the password used with HTTP basic authentication.
@return [String]
Proxy setting
HTTP Proxy settings
Set this to return data as binary instead of downloading a temp file. When enabled (set to true) HTTP responses with return type ‘File` will be returned as a stream of binary data. Default to false.
Defines url scheme
Define server configuration index
Define server operation configuration index
Default server operation variables
Default server variables
TLS/SSL setting
Set this to customize the certificate file to verify the peer.
@return [String] the path to the certificate file
TLS/SSL setting
Client certificate file (for client certificate)
TLS/SSL setting
Client private key file (for client certificate)
TLS/SSL setting
Set this to false to skip verifying SSL certificate when calling API from https server. Default to true.
@note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks.
@return [true, false]
TLS/SSL setting
Any ‘OpenSSL::SSL::` constant (see ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL.html)
@note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks.
Defines the temporary folder to store downloaded files (for API endpoints that have file response). Default to use ‘Tempfile`.
@return [String]
The time limit for HTTP request in seconds. Default to 0 (never times out).
Defines the username used with HTTP basic authentication.
@return [String]
Public Class Methods
The default Configuration
object.
# File lib/onfido/configuration.rb, line 200 def self.default @@default ||= Configuration.new end
# File lib/onfido/configuration.rb, line 166 def initialize @scheme = 'https' @host = 'api.eu.onfido.com' @base_path = '/v3.6' @server_index = nil @server_operation_index = {} @server_variables = {} @server_operation_variables = {} @api_key = {} @api_key_prefix = {} @client_side_validation = true @ssl_verify = true @ssl_verify_mode = nil @ssl_ca_file = nil @ssl_client_cert = nil @ssl_client_key = nil @middlewares = Hash.new { |h, k| h[k] = [] } @configure_connection_blocks = [] @timeout = 30 # return data as binary instead of file @return_binary_data = false @params_encoder = nil @debugging = false @ignore_operation_servers = false @inject_format = false @force_ending_format = false @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT) use( Faraday::FollowRedirects::Middleware ) yield(self) if block_given? end
Public Instance Methods
Gets access_token
using access_token_getter
or uses the static access_token
# File lib/onfido/configuration.rb, line 265 def access_token_with_refresh return access_token if access_token_getter.nil? access_token_getter.call end
Gets API key (with prefix if set). @param [String] param_name the parameter name of API key auth
# File lib/onfido/configuration.rb, line 254 def api_key_with_prefix(param_name, param_alias = nil) key = @api_key[param_name] key = @api_key.fetch(param_alias, key) unless param_alias.nil? if @api_key_prefix[param_name] "#{@api_key_prefix[param_name]} #{key}" else key end end
# File lib/onfido/configuration.rb, line 235 def api_token=(api_token) @api_key = {'Token' => "Token token=#{api_token}"} end
Returns Auth Settings hash for api client.
# File lib/onfido/configuration.rb, line 276 def auth_settings { 'Token' => { type: 'api_key', in: 'header', key: 'Authorization', value: api_key_with_prefix('Token') }, } end
# File lib/onfido/configuration.rb, line 218 def base_path=(base_path) # Add leading and trailing slashes to base_path @base_path = "/#{base_path}".gsub(/\/+/, '/') @base_path = '' if @base_path == '/' end
Returns base URL for specified operation based on server settings
# File lib/onfido/configuration.rb, line 225 def base_url(operation = nil) return "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') if ignore_operation_servers if operation_server_settings.key?(operation) then index = server_operation_index.fetch(operation, server_index) server_url(index.nil? ? 0 : index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation]) else server_index.nil? ? "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}".sub(/\/+\z/, '') : server_url(server_index, server_variables, nil) end end
Gets Basic Auth token string
# File lib/onfido/configuration.rb, line 271 def basic_auth_token 'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n") end
# File lib/onfido/configuration.rb, line 204 def configure yield(self) if block_given? end
# File lib/onfido/configuration.rb, line 368 def configure_connection(conn) @configure_connection_blocks.each do |block| block.call(conn) end end
Configure Faraday connection directly.
“‘ c.configure_faraday_connection do |conn|
conn.use Faraday::HttpCache, shared_cache: false, logger: logger conn.response :logger, nil, headers: true, bodies: true, log_level: :debug do |logger| logger.filter(/(Authorization: )(.*)/, '\1[REDACTED]') end
end
c.configure_faraday_connection do |conn|
conn.adapter :typhoeus
end “‘
@param block [Proc] ‘#call`able object that takes one arg, the connection
# File lib/onfido/configuration.rb, line 364 def configure_faraday_connection(&block) @configure_connection_blocks << block end
Set up middleware on the connection
# File lib/onfido/configuration.rb, line 411 def configure_middleware(connection) return if @middlewares.empty? [:request, :response, :use, :insert, :insert_before, :insert_after, :swap].each do |operation| next unless @middlewares.key?(operation) @middlewares[operation].each do |key, args, block| connection.builder.send(operation, key, *args, &block) end end if @middlewares.key?(:delete) @middlewares[:delete].each do |key, _args, _block| connection.builder.delete(key) end end end
# File lib/onfido/configuration.rb, line 213 def host=(host) # remove http(s):// and anything after a slash @host = host.sub(/https?:\/\//, '').split('/').first end
# File lib/onfido/configuration.rb, line 309 def operation_server_settings { } end
# File lib/onfido/configuration.rb, line 239 def region() REGIONS end
# File lib/onfido/configuration.rb, line 243 def region=(region) @server_index = 0 server_variables[:region] = region end
Adds request middleware to the stack
# File lib/onfido/configuration.rb, line 380 def request(*middleware) set_faraday_middleware(:request, *middleware) end
Adds response middleware to the stack
# File lib/onfido/configuration.rb, line 385 def response(*middleware) set_faraday_middleware(:response, *middleware) end
# File lib/onfido/configuration.rb, line 208 def scheme=(scheme) # remove :// from scheme @scheme = scheme.sub(/:\/\//, '') end
Returns an array of Server setting
# File lib/onfido/configuration.rb, line 289 def server_settings [ { url: "https://api.{region}.onfido.com/v3.6", description: "No description provided", variables: { region: { description: "No description provided", default_value: "eu", enum_values: [ "eu", "us", "ca" ] } } } ] end
Returns URL based on server settings
@param index array index of the server settings @param variables hash of variable and the corresponding value
# File lib/onfido/configuration.rb, line 318 def server_url(index, variables = {}, servers = nil) servers = server_settings if servers == nil # check array index out of bound if (index.nil? || index < 0 || index >= servers.size) fail ArgumentError, "Invalid index #{index} when selecting the server. Must not be nil and must be less than #{servers.size}" end server = servers[index] url = server[:url] return url unless server.key? :variables # go through variable and assign a value server[:variables].each do |name, variable| if variables.key?(name) if (!server[:variables][name].key?(:enum_values) || server[:variables][name][:enum_values].include?(variables[name])) url.gsub! "{" + name.to_s + "}", variables[name] else fail ArgumentError, "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}." end else # use default value url.gsub! "{" + name.to_s + "}", server[:variables][name][:default_value] end end url end
Adds Faraday middleware setting information to the stack
@example Use the ‘set_faraday_middleware` method to set middleware information
config.set_faraday_middleware(:request, :retry, max: 3, methods: [:get, :post], retry_statuses: [503]) config.set_faraday_middleware(:response, :logger, nil, { bodies: true, log_level: :debug }) config.set_faraday_middleware(:use, Faraday::HttpCache, store: Rails.cache, shared_cache: false) config.set_faraday_middleware(:insert, 0, FaradayMiddleware::FollowRedirects, { standards_compliant: true, limit: 1 }) config.set_faraday_middleware(:swap, 0, Faraday::Response::Logger) config.set_faraday_middleware(:delete, Faraday::Multipart::Middleware)
@see github.com/lostisland/faraday/blob/v2.3.0/lib/faraday/rack_builder.rb#L92-L143
# File lib/onfido/configuration.rb, line 400 def set_faraday_middleware(operation, key, *args, &block) unless [:request, :response, :use, :insert, :insert_before, :insert_after, :swap, :delete].include?(operation) fail ArgumentError, "Invalid faraday middleware operation #{operation}. Must be" \ " :request, :response, :use, :insert, :insert_before, :insert_after, :swap or :delete." end @middlewares[operation] << [key, args, block] end
# File lib/onfido/configuration.rb, line 248 def timeout=(timeout) @timeout = timeout end
Adds middleware to the stack
# File lib/onfido/configuration.rb, line 375 def use(*middleware) set_faraday_middleware(:use, *middleware) end