Sha256: b93247e9d8390ee6f7615ee62f3f1d89f3238d27aec483f74f9756c1ce14b4cd

Contents?: true

Size: 711 Bytes

Versions: 3

Compression:

Stored size: 711 Bytes

Contents

module Rpush
  module Daemon
    module Apnsp8
      TOKEN_TTL = 30 * 60
      class Token

        def initialize(app)
          @app = app
        end

        def token
          if @cached_token && !expired_token?
            @cached_token
          else
            new_token
          end
        end
        
        private

        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

        def expired_token?
          Time.now - @cached_token_at >= TOKEN_TTL
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rpush-3.2.2 lib/rpush/daemon/apnsp8/token.rb
rpush-3.2.1 lib/rpush/daemon/apnsp8/token.rb
rpush-3.2.0 lib/rpush/daemon/apnsp8/token.rb