class Conekta::Configuration
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
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
Source
# File lib/conekta/configuration.rb, line 181 def self.default @@default ||= Configuration.new end
The default Configuration
object.
Source
# File lib/conekta/configuration.rb, line 150 def initialize @scheme = 'https' @host = 'api.conekta.io' @base_path = '' @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 = File.dirname(__FILE__) + '/../ssl_data/ca_bundle.crt' @ssl_client_cert = nil @ssl_client_key = nil @middlewares = Hash.new { |h, k| h[k] = [] } @configure_connection_blocks = [] @timeout = 60 # return data as binary instead of file @return_binary_data = false @params_encoder = nil @debugging = false @inject_format = false @force_ending_format = false @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT) yield(self) if block_given? end
Public Instance Methods
Source
# File lib/conekta/configuration.rb, line 228 def access_token_with_refresh return access_token if access_token_getter.nil? access_token_getter.call end
Gets access_token
using access_token_getter
or uses the static access_token
Source
# File lib/conekta/configuration.rb, line 217 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
Gets API key (with prefix if set). @param [String] param_name the parameter name of API key auth
Source
# File lib/conekta/configuration.rb, line 239 def auth_settings { 'bearerAuth' => { type: 'bearer', in: 'header', key: 'Authorization', value: "Bearer #{access_token_with_refresh}" }, } end
Returns Auth Settings hash for api client.
Source
# File lib/conekta/configuration.rb, line 199 def base_path=(base_path) # Add leading and trailing slashes to base_path @base_path = "/#{base_path}".gsub(/\/+/, '/') @base_path = '' if @base_path == '/' end
Source
# File lib/conekta/configuration.rb, line 206 def base_url(operation = nil) 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
Returns base URL for specified operation based on server settings
Source
# File lib/conekta/configuration.rb, line 234 def basic_auth_token 'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n") end
Gets Basic Auth token string
Source
# File lib/conekta/configuration.rb, line 185 def configure yield(self) if block_given? end
Source
# File lib/conekta/configuration.rb, line 320 def configure_connection(conn) @configure_connection_blocks.each do |block| block.call(conn) end end
Source
# File lib/conekta/configuration.rb, line 316 def configure_faraday_connection(&block) @configure_connection_blocks << block 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
Source
# File lib/conekta/configuration.rb, line 363 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
Set up middleware on the connection
Source
# File lib/conekta/configuration.rb, line 194 def host=(host) # remove http(s):// and anything after a slash @host = host.sub(/https?:\/\//, '').split('/').first end
Source
# File lib/conekta/configuration.rb, line 261 def operation_server_settings { } end
Source
# File lib/conekta/configuration.rb, line 332 def request(*middleware) set_faraday_middleware(:request, *middleware) end
Adds request middleware to the stack
Source
# File lib/conekta/configuration.rb, line 337 def response(*middleware) set_faraday_middleware(:response, *middleware) end
Adds response middleware to the stack
Source
# File lib/conekta/configuration.rb, line 189 def scheme=(scheme) # remove :// from scheme @scheme = scheme.sub(/:\/\//, '') end
Source
# File lib/conekta/configuration.rb, line 252 def server_settings [ { url: "https://api.conekta.io", description: "Conekta main server", } ] end
Returns an array of Server setting
Source
# File lib/conekta/configuration.rb, line 270 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
Returns URL based on server settings
@param index array index of the server settings @param variables hash of variable and the corresponding value
Source
# File lib/conekta/configuration.rb, line 352 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
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
Source
# File lib/conekta/configuration.rb, line 327 def use(*middleware) set_faraday_middleware(:use, *middleware) end
Adds middleware to the stack