class PG::AWS_RDS_IAM::AuthTokenGeneratorRegistry

Registers {AuthTokenGenerator}s to be used to generate authentication tokens for `PG::Connection`s that have the `aws_rds_iam_auth_token_generator` connection parameter set to the registered name.

Public Class Methods

new(default_auth_token_generator_class: AuthTokenGenerator) click to toggle source

Creates a new `AuthTokenRegistry`.

@param default_auth_token_generator_class [Class] the class to register as the default {AuthTokenGenerator}

# File lib/pg/aws_rds_iam/auth_token_generator_registry.rb, line 11
def initialize(default_auth_token_generator_class: AuthTokenGenerator)
  @default_auth_token_generator_class = default_auth_token_generator_class
  reset
end

Public Instance Methods

add(name, &block) click to toggle source

Registers an {AuthTokenGenerator}.

@param name [String, Symbol] @return [void] @yieldreturn [AuthTokenGenerator]

# File lib/pg/aws_rds_iam/auth_token_generator_registry.rb, line 21
def add(name, &block)
  @registry[name.to_s] = Memoizer.new(&block)
end
fetch(name) click to toggle source

Looks up an {AuthTokenGenerator} by name.

@param name [String, Symbol] @return [AuthTokenGenerator]

# File lib/pg/aws_rds_iam/auth_token_generator_registry.rb, line 29
def fetch(name)
  @registry.fetch(name.to_s).call
end
remove(name) click to toggle source

Unregisters an {AuthTokenGenerator}.

@param name [String, Symbol] @return [void]

# File lib/pg/aws_rds_iam/auth_token_generator_registry.rb, line 37
def remove(name)
  @registry.delete name.to_s
end
reset() click to toggle source

Unregisters all {AuthTokenGenerator}s and re-registers the default {AuthTokenGenerator}.

@return [void]

# File lib/pg/aws_rds_iam/auth_token_generator_registry.rb, line 44
def reset
  @registry = {}

  add :default do
    config = Aws::RDS::Client.new.config
    @default_auth_token_generator_class.new(credentials: config.credentials, region: config.region)
  end
end