Class: Apcera::Configuration

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/apcera/configuration.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/apcera/configuration.rb', line 105

def initialize
  @scheme = 'https'
  @host = 'apiDoc.zeppole.buffalo.im'
  @base_path = '/v1'
  @api_key = {}
  @api_key_prefix = {}
  @verify_ssl = true
  @cert_file = nil
  @key_file = nil
  @debugging = false
  @inject_format = false
  @force_ending_format = false
  @logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
end

Instance Attribute Details

#api_clientObject

Default api client



10
11
12
# File 'lib/apcera/configuration.rb', line 10

def api_client
  @api_client
end

#api_keyHash

Defines API keys used with API Key authentications.

Examples:

parameter name is “api_key”, API key is “xxx” (e.g. “api_key=xxx” in query string)

config.api_key['api_key'] = 'xxx'

Returns:

  • (Hash)

    key: parameter name, value: parameter value (API key)



27
28
29
# File 'lib/apcera/configuration.rb', line 27

def api_key
  @api_key
end

#api_key_prefixHash

Defines API key prefixes used with API Key authentications.

Examples:

parameter name is “Authorization”, API key prefix is “Token” (e.g. “Authorization: Token xxx” in headers)

config.api_key_prefix['api_key'] = 'Token'

Returns:

  • (Hash)

    key: parameter name, value: API key prefix



35
36
37
# File 'lib/apcera/configuration.rb', line 35

def api_key_prefix
  @api_key_prefix
end

#base_pathObject

Defines url base path



19
20
21
# File 'lib/apcera/configuration.rb', line 19

def base_path
  @base_path
end

#cert_fileObject

Client certificate file (for client certificate)



85
86
87
# File 'lib/apcera/configuration.rb', line 85

def cert_file
  @cert_file
end

#debuggingtrue, 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.

Returns:

  • (true, false)


52
53
54
# File 'lib/apcera/configuration.rb', line 52

def debugging
  @debugging
end

#force_ending_formatObject

Returns the value of attribute force_ending_format.



92
93
94
# File 'lib/apcera/configuration.rb', line 92

def force_ending_format
  @force_ending_format
end

#hostObject

Defines url host



16
17
18
# File 'lib/apcera/configuration.rb', line 16

def host
  @host
end

#inject_formatObject

Returns the value of attribute inject_format.



90
91
92
# File 'lib/apcera/configuration.rb', line 90

def inject_format
  @inject_format
end

#key_fileObject

Client private key file (for client certificate)



88
89
90
# File 'lib/apcera/configuration.rb', line 88

def key_file
  @key_file
end

#logger#debug

Defines the logger used for debugging. Default to ‘Rails.logger` (when in Rails) or logging to STDOUT.

Returns:

  • (#debug)


58
59
60
# File 'lib/apcera/configuration.rb', line 58

def logger
  @logger
end

#passwordString

Defines the password used with HTTP basic authentication.

Returns:



45
46
47
# File 'lib/apcera/configuration.rb', line 45

def password
  @password
end

#schemeObject

Defines url scheme



13
14
15
# File 'lib/apcera/configuration.rb', line 13

def scheme
  @scheme
end

#ssl_ca_certString

Set this to customize the certificate file to verify the peer.

github.com/typhoeus/typhoeus/blob/master/lib/typhoeus/easy_factory.rb#L145

Returns:

  • (String)

    the path to the certificate file

See Also:

  • `cainfo` option of Typhoeus, `--cert` option of libcurl. Related source code:


82
83
84
# File 'lib/apcera/configuration.rb', line 82

def ssl_ca_cert
  @ssl_ca_cert
end

#temp_folder_pathString

Defines the temporary folder to store downloaded files (for API endpoints that have file response). Default to use ‘Tempfile`.

Returns:



65
66
67
# File 'lib/apcera/configuration.rb', line 65

def temp_folder_path
  @temp_folder_path
end

#usernameString

Defines the username used with HTTP basic authentication.

Returns:



40
41
42
# File 'lib/apcera/configuration.rb', line 40

def username
  @username
end

#verify_ssltrue, false

Note:

Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks.

TLS/SSL Set this to false to skip verifying SSL certificate when calling API from https server. Default to true.

Returns:

  • (true, false)


74
75
76
# File 'lib/apcera/configuration.rb', line 74

def verify_ssl
  @verify_ssl
end

Class Method Details

.method_missing(method_name, *args, &block) ⇒ Object



95
96
97
98
99
100
101
102
# File 'lib/apcera/configuration.rb', line 95

def method_missing(method_name, *args, &block)
  config = Configuration.instance
  if config.respond_to?(method_name)
    config.send(method_name, *args, &block)
  else
    super
  end
end

Instance Method Details

#api_key_with_prefix(param_name) ⇒ Object

Gets API key (with prefix if set).

Parameters:

  • param_name (String)

    the parameter name of API key auth



147
148
149
150
151
152
153
# File 'lib/apcera/configuration.rb', line 147

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

#auth_settingsObject

Returns Auth Settings hash for api client.



161
162
163
164
165
166
167
168
169
170
171
# File 'lib/apcera/configuration.rb', line 161

def auth_settings
  {
    'authorization' =>
      {
        type: 'api_key',
        in: 'header',
        key: 'authorization',
        value: api_key_with_prefix('authorization')
      },
  }
end

#base_urlObject



140
141
142
143
# File 'lib/apcera/configuration.rb', line 140

def base_url
  url = "#{scheme}://#{[host, base_path].join('/').gsub(/\/+/, '/')}"
  URI.encode(url)
end

#basic_auth_tokenObject

Gets Basic Auth token string



156
157
158
# File 'lib/apcera/configuration.rb', line 156

def basic_auth_token
  'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n")
end