class XCToken::Main

Public Instance Methods

generate() click to toggle source
# File lib/xctoken/main.rb, line 13
def generate
  issuer_id = ENV["ISSUER_ID"]
  key_id = ENV["KEY_ID"]
  key_dir = ENV["KEY_DIR"]

  full_key_path = "#{key_dir}/AuthKey_#{key_id}.p8"

  if !File.file?(full_key_path)
     puts "Private key not found in the specified directory with key identifier assiciated"
     puts "Please make sure KEY_DIR and KEY_ID environmetal varibales set correctly and private key exist in the KEY_DIR"
     raise 'Private Key not setup correctly. Please make sure ENV[KEY_DIR] has private key'
  end

  private_key = OpenSSL::PKey.read(File.read(full_key_path))

  $token = JWT.encode(
     {
      iss: issuer_id,
      exp: Time.now.to_i + 20 * 60,
      aud: "appstoreconnect-v1"
     },
     private_key,
     "ES256",
     header_fields = {
       kid: key_id,
     }
   )
  puts $token

end