Sha256: 007694210dc016f08e9cbeffc9c560055e544bbb63a52de19dde8111f1063cf0

Contents?: true

Size: 1.48 KB

Versions: 133

Compression:

Stored size: 1.48 KB

Contents

# frozen_string_literal: true

require 'jwt'

module Twilio
  module JWT
    autoload :AccessToken, File.join(File.dirname(__FILE__), 'access_token.rb')
    autoload :ClientCapability, File.join(File.dirname(__FILE__), 'client_capability.rb')
    autoload :TaskRouterCapability, File.join(File.dirname(__FILE__), 'task_router.rb')

    class BaseJWT
      # valid_until overrides ttl if specified
      def initialize(secret_key: nil, issuer: nil, subject: nil, nbf: nil, ttl: 3600, valid_until: nil)
        if secret_key.nil?
          raise ArgumentError, 'JWT does not have a signing key'
        end

        @secret_key = secret_key
        @issuer = issuer
        @subject = subject
        @algorithm = 'HS256'
        @nbf = nbf
        @ttl = ttl
        @valid_until = valid_until
      end

      def _generate_headers
        {}
      end

      def _generate_payload
        raise NotImplementedError
      end

      def headers
        headers = _generate_headers.clone
        headers['typ'] = 'JWT'
        headers['alg'] = @algorithm
        headers
      end

      def payload
        payload = _generate_payload.clone

        payload[:iss] = @issuer
        payload[:nbf] = @nbf || Time.now.to_i
        payload[:exp] = @valid_until.nil? ? Time.now.to_i + @ttl : @valid_until
        payload[:sub] = @subject unless @subject.nil?

        payload
      end

      def to_jwt
        ::JWT.encode payload, @secret_key, @algorithm, headers
      end
      alias to_s to_jwt
    end
  end
end

Version data entries

133 entries across 133 versions & 2 rubygems

Version Path
twilio-ruby-7.4.4 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.4.3 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.4.2 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.4.1 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.4.0 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.3.7 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.3.6 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.3.5 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.3.4 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.3.3 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.3.2 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.3.1 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.3.0 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.2.4 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.2.3 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.2.2 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.2.1 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.2.0 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.1.1 lib/twilio-ruby/jwt/jwt.rb
twilio-ruby-7.0.2 lib/twilio-ruby/jwt/jwt.rb