Sha256: cb5bbbe531fbebba82eee72128077ebe9bc900383c3af2a5283c319a08d982e7

Contents?: true

Size: 898 Bytes

Versions: 12

Compression:

Stored size: 898 Bytes

Contents

require 'openssl'
require 'base64'

module Stream
  class Signer
    @key = nil

    def initialize(key)
      @key = key.to_s
      @sha1 = OpenSSL::Digest.new('sha1')
    end

    def urlsafe_encodeb64(value)
      value.tr('+', '-').tr('/', '_').gsub(/^=+/, '').gsub(/=+$/, '')
    end

    def sign_message(message)
      key = Digest::SHA1.digest @key.to_s
      token = Base64.strict_encode64(OpenSSL::HMAC.digest(@sha1, key, message))
      urlsafe_encodeb64(token)
    end

    def sign(feed_slug, user_id)
      sign_message("#{feed_slug}#{user_id}")
    end

    def self.create_jwt_token(resource, action, api_secret, feed_id = nil, user_id = nil)
      payload = {
          resource: resource,
          action: action
      }
      payload['feed_id'] = feed_id if feed_id
      payload['user_id'] = user_id if user_id

      JWT.encode(payload, api_secret, 'HS256')
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
stream-ruby-2.10.0 lib/stream/signer.rb
stream-ruby-2.9.3 lib/stream/signer.rb
stream-ruby-2.9.2 lib/stream/signer.rb
stream-ruby-2.9.1 lib/stream/signer.rb
stream-ruby-2.9.0 lib/stream/signer.rb
stream-ruby-2.8.0 lib/stream/signer.rb
stream-ruby-2.7.1 lib/stream/signer.rb
stream-ruby-2.7.0 lib/stream/signer.rb
stream-ruby-2.6.1 lib/stream/signer.rb
stream-ruby-2.6.0 lib/stream/signer.rb
stream-ruby-2.5.10 lib/stream/signer.rb
stream-ruby-2.5.9 lib/stream/signer.rb