class Spaceship::ConnectAPI::Token

Constants

MAX_TOKEN_DURATION

maximum expiration supported by AppStore (20 minutes)

Attributes

issuer_id[R]
key_id[R]
text[R]

Public Class Methods

create(key_id: nil, issuer_id: nil, filepath: nil) click to toggle source
# File spaceship/lib/spaceship/connect_api/token.rb, line 20
def self.create(key_id: nil, issuer_id: nil, filepath: nil)
  key_id ||= ENV['SPACESHIP_CONNECT_API_KEY_ID']
  issuer_id ||= ENV['SPACESHIP_CONNECT_API_ISSUER_ID']
  filepath ||= ENV['SPACESHIP_CONNECT_API_KEY_FILEPATH']

  self.new(
    key_id: key_id,
    issuer_id: issuer_id,
    key: OpenSSL::PKey::EC.new(File.read(filepath))
  )
end
new(key_id: nil, issuer_id: nil, key: nil) click to toggle source
# File spaceship/lib/spaceship/connect_api/token.rb, line 32
def initialize(key_id: nil, issuer_id: nil, key: nil)
  @expiration = Time.now + MAX_TOKEN_DURATION
  @key_id = key_id
  @key = key
  @issuer_id = issuer_id

  header = {
    kid: key_id
  }

  payload = {
    iss: issuer_id,
    exp: @expiration.to_i,
    aud: 'appstoreconnect-v1'
  }

  @text = JWT.encode(payload, key, 'ES256', header)
end

Public Instance Methods

expired?() click to toggle source
# File spaceship/lib/spaceship/connect_api/token.rb, line 51
def expired?
  @expiration < Time.now
end