Class: Supportify::Configuration

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/supportify_client/configuration.rb', line 98

def initialize
  @scheme = 'https'
  @host = 'api.supportify.io'
  @base_path = '/v2'
  @api_key = {}
  @api_key_prefix = {}
  @verify_ssl = true
  @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/supportify_client/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/supportify_client/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/supportify_client/configuration.rb', line 35

def api_key_prefix
  @api_key_prefix
end

#base_pathObject

Defines url base path



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

def base_path
  @base_path
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/supportify_client/configuration.rb', line 52

def debugging
  @debugging
end

#force_ending_formatObject

Returns the value of attribute force_ending_format.



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

def force_ending_format
  @force_ending_format
end

#hostObject

Defines url host



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

def host
  @host
end

#inject_formatObject

Returns the value of attribute inject_format.



83
84
85
# File 'lib/supportify_client/configuration.rb', line 83

def inject_format
  @inject_format
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/supportify_client/configuration.rb', line 58

def logger
  @logger
end

#passwordString

Defines the password used with HTTP basic authentication.

Returns:

  • (String)


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

def password
  @password
end

#schemeObject

Defines url scheme



13
14
15
# File 'lib/supportify_client/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:


81
82
83
# File 'lib/supportify_client/configuration.rb', line 81

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:

  • (String)


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

def temp_folder_path
  @temp_folder_path
end

#usernameString

Defines the username used with HTTP basic authentication.

Returns:

  • (String)


40
41
42
# File 'lib/supportify_client/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.

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

Returns:

  • (true, false)


73
74
75
# File 'lib/supportify_client/configuration.rb', line 73

def verify_ssl
  @verify_ssl
end

Class Method Details

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



88
89
90
91
92
93
94
95
# File 'lib/supportify_client/configuration.rb', line 88

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

#account_api_keyObject



155
156
157
# File 'lib/supportify_client/configuration.rb', line 155

def 
  @api_key['X-SUPPORTIFY-APIKEY']
end

#account_api_key=(value) ⇒ Object



151
152
153
# File 'lib/supportify_client/configuration.rb', line 151

def (value)
  @api_key['X-SUPPORTIFY-APIKEY'] = value
end

#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



138
139
140
141
142
143
144
# File 'lib/supportify_client/configuration.rb', line 138

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

#application_api_keyObject



163
164
165
# File 'lib/supportify_client/configuration.rb', line 163

def application_api_key
  @api_key['X-SUPPORTIFY-APPKEY']
end

#application_api_key=(value) ⇒ Object



159
160
161
# File 'lib/supportify_client/configuration.rb', line 159

def application_api_key=(value)
  @api_key['X-SUPPORTIFY-APPKEY'] = value
end

#auth_settingsObject

Returns Auth Settings hash for api client.



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/supportify_client/configuration.rb', line 168

def auth_settings
  {
    'api_key' =>
      {
        type: 'api_key',
        in: 'header',
        key: 'X-SUPPORTIFY-APIKEY',
        value: api_key_with_prefix('X-SUPPORTIFY-APIKEY')
      },
    'app_key' =>
      {
        type: 'api_key',
        in: 'header',
        key: 'X-SUPPORTIFY-APPKEY',
        value: api_key_with_prefix('X-SUPPORTIFY-APPKEY')
      },
  }
end

#base_urlObject



131
132
133
134
# File 'lib/supportify_client/configuration.rb', line 131

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

#basic_auth_tokenObject

Gets Basic Auth token string



147
148
149
# File 'lib/supportify_client/configuration.rb', line 147

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