class Slanger::Subscription

Attributes

connection[RW]
socket[RW]

Public Class Methods

new(socket, socket_id, msg) click to toggle source
# File lib/slanger/subscription.rb, line 6
def initialize socket, socket_id, msg
  @connection = Connection.new socket, socket_id
  @msg        = msg
end

Public Instance Methods

subscribe() click to toggle source
# File lib/slanger/subscription.rb, line 11
def subscribe
  send_payload channel_id, 'pusher_internal:subscription_succeeded'

  channel.subscribe { |m| send_message m }
end

Private Instance Methods

auth() click to toggle source
# File lib/slanger/subscription.rb, line 38
def auth
  @msg['data']['auth']
end
channel() click to toggle source
# File lib/slanger/subscription.rb, line 19
def channel
  Channel.from channel_id
end
channel_id() click to toggle source
# File lib/slanger/subscription.rb, line 23
def channel_id
  @msg['data']['channel']
end
data() click to toggle source
# File lib/slanger/subscription.rb, line 42
def data
  @msg['data']['channel_data']
end
handle_invalid_signature() click to toggle source
# File lib/slanger/subscription.rb, line 46
def handle_invalid_signature
  message = "Invalid signature: Expected HMAC SHA256 hex digest of "
  message << "#{socket_id}:#{channel_id}, but got #{auth}"

  error({ message: message})
end
invalid_signature?() click to toggle source
# File lib/slanger/subscription.rb, line 34
def invalid_signature?
  token(channel_id, data) != auth.split(':')[1]
end
token(channel_id, params=nil) click to toggle source
# File lib/slanger/subscription.rb, line 27
def token(channel_id, params=nil)
  to_sign = [socket_id, channel_id, params].compact.join ':'

  digest = OpenSSL::Digest::SHA256.new
  OpenSSL::HMAC.hexdigest digest, Slanger::Config.secret, to_sign
end