class AwsSessionToken::CredentialsFile

Helper class for interacting with the Credentials file.

Constants

Profile

Public Instance Methods

write(filename, profile, credentials) click to toggle source
# File lib/aws_session_token/credentials_file.rb, line 31
def write(filename, profile, credentials)
  file = nil
  begin
    profiles = read_profiles(filename)
    file = File.open(filename, 'w')
    write_file(credentials, file, profile, profiles)
  ensure
    file&.close
  end
end

Private Instance Methods

read_profiles(credentials_file) click to toggle source
# File lib/aws_session_token/credentials_file.rb, line 44
def read_profiles(credentials_file)
  profiles = []
  profile = nil
  File.readlines(credentials_file).each do |line|
    if line =~ /^\[/
      profile = Profile.new(line, [])
      profiles << profile
    else
      profile.data << line
    end
  end
  profiles
end
write_file(credentials, file, profile, profiles) click to toggle source
# File lib/aws_session_token/credentials_file.rb, line 58
def write_file(credentials, file, profile, profiles)
  found = false
  profiles.each do |p|
    if p.name =~ /^\[#{profile}\]/
      write_session(file, profile, credentials)
      found = true
    else
      write_profile(file, p)
    end
  end
  write_session(file, profile, credentials) unless found
end
write_profile(file, profile) click to toggle source
# File lib/aws_session_token/credentials_file.rb, line 71
def write_profile(file, profile)
  file.puts(profile.name)
  profile.data.each do |l|
    file.puts(l)
  end
end
write_session(file, profile, creds) click to toggle source
# File lib/aws_session_token/credentials_file.rb, line 78
def write_session(file, profile, creds)
  file.puts("[#{profile}]")
  file.puts("aws_access_key_id = #{creds.access_key_id}")
  file.puts("aws_secret_access_key = #{creds.secret_access_key}")
  file.puts("aws_session_token = #{creds.session_token}")
end