class PG::AWS_RDS_IAM::AuthTokenInjector

Public Class Methods

call(connection_string, auth_token_generators: AWS_RDS_IAM.auth_token_generators) click to toggle source
# File lib/pg/aws_rds_iam/auth_token_injector.rb, line 6
def self.call(connection_string, auth_token_generators: AWS_RDS_IAM.auth_token_generators)
  new(connection_string, auth_token_generators: auth_token_generators).call
end
new(connection_string, auth_token_generators:) click to toggle source
# File lib/pg/aws_rds_iam/auth_token_injector.rb, line 10
def initialize(connection_string, auth_token_generators:)
  @connection_string = connection_string
  @connection_info = ConnectionInfo.new(connection_string)
  @connection_defaults = PG::Connection.conndefaults_hash
  @auth_token_generators = auth_token_generators
end

Public Instance Methods

call() click to toggle source
# File lib/pg/aws_rds_iam/auth_token_injector.rb, line 17
def call
  return @connection_string unless generate_auth_token?

  @connection_info.password = generate_auth_token

  @connection_info.to_s
end

Private Instance Methods

default(key) click to toggle source
# File lib/pg/aws_rds_iam/auth_token_injector.rb, line 41
def default(key)
  @connection_defaults.fetch(key)
end
generate_auth_token() click to toggle source
# File lib/pg/aws_rds_iam/auth_token_injector.rb, line 31
def generate_auth_token
  @auth_token_generators
    .fetch(@connection_info.auth_token_generator_name)
    .call(
      user: @connection_info.user || default(:user),
      host: @connection_info.host || default(:host),
      port: @connection_info.port || default(:port)
    )
end
generate_auth_token?() click to toggle source
# File lib/pg/aws_rds_iam/auth_token_injector.rb, line 27
def generate_auth_token?
  @connection_info.auth_token_generator_name
end