class XeroRuby::Configuration
Attributes
Defines the access token (Bearer) used with OAuth2 authorization
Defines base paths for seperate API's
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 & url for overwriting
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 OpenID Connect id_token
containing Xero user authentication detail
Defines the logger used for debugging. Default to `Rails.logger` (when in Rails) or logging to STDOUT.
@return [#debug]
Defines url for identity routes
Set this to customize parameters encoding of array parameter with multi collectionFormat. Default to nil.
Defines the password used with HTTP basic authentication.
@return [String]
Defines url scheme
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 token set used with OAuth2. May include id/access/refresh token & other meta info.
Defines the username used with HTTP basic authentication.
@return [String]
Public Class Methods
The default Configuration
object.
# File lib/xero-ruby/configuration.rb, line 174 def self.default @@default ||= Configuration.new end
# File lib/xero-ruby/configuration.rb, line 140 def initialize @scheme = 'https' @host = 'api.xero.com' @base_path = '/api.xro/2.0' @login_url = 'https://login.xero.com/identity/connect/authorize' @token_url = 'https://identity.xero.com/connect' @accounting_url = 'https://api.xero.com/api.xro/2.0' @asset_url = 'https://api.xero.com/assets.xro/1.0' @project_url = 'https://api.xero.com/projects.xro/2.0/' @files_url = 'https://api.xero.com/files.xro/1.0/' @payroll_au_url = 'https://api.xero.com/payroll.xro/1.0/' @payroll_nz_url = 'https://api.xero.com/payroll.xro/2.0/' @payroll_uk_url = 'https://api.xero.com/payroll.xro/2.0/' @app_store_url = 'https://api.xero.com/appstore/2.0/' @access_token = nil @id_token = nil @api_key = {} @api_key_prefix = {} @timeout = 0 @client_side_validation = true @ssl_verify = true @ssl_verify_mode = nil @ssl_ca_file = nil @ssl_client_cert = nil @ssl_client_key = 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
# File lib/xero-ruby/configuration.rb, line 202 def access_token=(access_token) @access_token = access_token end
Gets API key (with prefix if set). @param [String] param_name the parameter name of API key auth
# File lib/xero-ruby/configuration.rb, line 212 def api_key_with_prefix(param_name) if @api_key_prefix[param_name] "#{@api_key_prefix[param_name]} #{@api_key[param_name]}" else @api_key[param_name] end end
Returns Auth Settings hash for api client.
# File lib/xero-ruby/configuration.rb, line 226 def auth_settings { 'OAuth2' => { type: 'oauth2', in: 'header', key: 'Authorization', value: "Bearer #{access_token}" }, } end
# File lib/xero-ruby/configuration.rb, line 192 def base_path=(base_path) # Add leading and trailing slashes to base_path @base_path = "/#{base_path}".gsub(/\/+/, '/') @base_path = '' if @base_path == '/' end
# File lib/xero-ruby/configuration.rb, line 198 def base_url=(api_url) @base_url = api_url end
Gets Basic Auth token string
# File lib/xero-ruby/configuration.rb, line 221 def basic_auth_token 'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n") end
# File lib/xero-ruby/configuration.rb, line 178 def configure yield(self) if block_given? end
# File lib/xero-ruby/configuration.rb, line 187 def host=(host) # remove http(s):// and anything after a slash @host = host.sub(/https?:\/\//, '').split('/').first end
# File lib/xero-ruby/configuration.rb, line 206 def id_token=(id_token) @id_token = id_token end
# File lib/xero-ruby/configuration.rb, line 182 def scheme=(scheme) # remove :// from scheme @scheme = scheme.sub(/:\/\//, '') end
Returns an array of Server setting
# File lib/xero-ruby/configuration.rb, line 239 def server_settings [ { url: "https://api.xero.com/api.xro/2.0", description: "The Xero Accounting API exposes accounting and related functions of the main Xero application and can be used for a variety of purposes such as creating transactions like invoices and credit notes, right through to extracting accounting data via our reports endpoint.", } ] 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/xero-ruby/configuration.rb, line 252 def server_url(index, variables = {}) servers = server_settings # check array index out of bound if (index < 0 || index >= servers.size) fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}" end server = servers[index] url = server[:url] # go through variable and assign a value server[:variables].each do |name, variable| if variables.key?(name) if (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