class NetboxClientRuby::Secrets::SessionKey

Constants

PATH

Public Class Methods

new() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 13
def initialize
  session_key
end

Public Instance Methods

reload() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 21
def reload
  NetboxClientRuby::Secrets.session_key = request['session_key']
end
session_key() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 17
def session_key
  NetboxClientRuby::Secrets.session_key ||= request['session_key']
end

Private Instance Methods

auth_config() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 105
def auth_config
  netbox_config.auth
end
authorization_token() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 44
def authorization_token
  auth_config.token
end
connection() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 40
def connection
  NetboxClientRuby::Connection.new(request_encoding: :url_encoded)
end
decode_private_key(encoded_private_key) click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 55
def decode_private_key(encoded_private_key)
  begin
    private_key = OpenSSL::PKey::RSA.new encoded_private_key, rsa_private_key_password

    return private_key if private_key.private?
  rescue OpenSSL::PKey::RSAError
    if rsa_private_key_password.empty?
      raise LocalError,
            "The private key at '#{rsa_private_key_path}' requires a password, but none was given, or the key data is corrupted. (The corresponding configuration is 'netbox.auth.rsa_private_key.password'.)"
    else
      raise LocalError,
            "The password given for the private key at '#{rsa_private_key_path}' is not valid or the key data is corrupted. (The corresponding configuration is 'netbox.auth.rsa_private_key.password'.)"
    end
  end

  raise LocalError,
        "The file at '#{rsa_private_key_path}' is not a private key, but a private key is required for get-session-key. (The corresponding configuration is 'netbox.auth.rsa_private_key.path'.)"
end
netbox_config() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 109
def netbox_config
  NetboxClientRuby.config.netbox
end
open_private_key_file() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 90
def open_private_key_file
  return File.new rsa_private_key_path if File.exist? rsa_private_key_path

  raise LocalError,
        "No file exists at the given path '#{rsa_private_key_path}', but it's required for get-session-key. (The corresponding configuration is 'netbox.auth.rsa_private_key.path'.)"
end
post() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 36
def post
  connection.post PATH, private_key: private_key
end
private_key() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 48
def private_key
  key_file = open_private_key_file
  encoded_private_key = read_private_key_file(key_file)
  private_key = decode_private_key(encoded_private_key)
  private_key.to_pem
end
read_private_key_file(key_file) click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 82
def read_private_key_file(key_file)
  encoded_private_key = key_file.read
  return encoded_private_key unless encoded_private_key.nil? || encoded_private_key.empty?

  raise LocalError,
        "The file at '#{rsa_private_key_path}' is empty, but a private key is required for get-session-key. (The corresponding configuration is 'netbox.auth.rsa_private_key.path'.)"
end
request() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 27
def request
  if authorization_token
    response(post)
  else
    raise LocalError,
          "The authorization_token has not been configured, but it's required for get-session-key."
  end
end
rsa_private_key_config() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 101
def rsa_private_key_config
  auth_config.rsa_private_key
end
rsa_private_key_password() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 74
def rsa_private_key_password
  pwd = rsa_private_key_config.password
  # If nil is not converted to '', then OpenSSL will block and ask on console for the password.
  # We really don't want that.
  return '' if pwd.nil?
  pwd
end
rsa_private_key_path() click to toggle source
# File lib/netbox_client_ruby/api/secrets/session_key.rb, line 97
def rsa_private_key_path
  @rsa_private_key_path ||= File.expand_path(rsa_private_key_config.path)
end