class Rpush::Daemon::Apnsp8::Token

Public Class Methods

new(app) click to toggle source
# File lib/rpush/daemon/apnsp8/token.rb, line 6
def initialize(app)
  @app = app
end

Public Instance Methods

token() click to toggle source
# File lib/rpush/daemon/apnsp8/token.rb, line 10
def token
  if @cached_token && !expired_token?
    @cached_token
  else
    new_token
  end
end

Private Instance Methods

expired_token?() click to toggle source
# File lib/rpush/daemon/apnsp8/token.rb, line 37
def expired_token?
  Time.now - @cached_token_at >= TOKEN_TTL
end
new_token() click to toggle source
# File lib/rpush/daemon/apnsp8/token.rb, line 20
def new_token
  @cached_token_at = Time.now
  ec_key = OpenSSL::PKey::EC.new(@app.apn_key)
  @cached_token = JWT.encode(
    {
      iss: @app.team_id,
      iat: Time.now.to_i
    },
    ec_key,
    'ES256',
    {
      alg: 'ES256',
      kid: @app.apn_key_id
    }
  )
end