Sha256: 41ba39a74a6eac500776ef9783945f1fcd7d0796be113d29e02697647c18920e

Contents?: true

Size: 578 Bytes

Versions: 5

Compression:

Stored size: 578 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
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
stream-ruby-2.4.0 lib/stream/signer.rb
stream-ruby-2.3.1 lib/stream/signer.rb
stream-ruby-2.3 lib/stream/signer.rb
stream-ruby-2.2.5 lib/stream/signer.rb
stream-ruby-2.2.4 lib/stream/signer.rb