class RenderSync::FayeExtension

Public Instance Methods

batch_incoming(message, callback) click to toggle source
# File lib/render_sync/faye_extension.rb, line 13
def batch_incoming(message, callback)
  message["data"].each do |message|
    incoming(message, callback)
  end
end
batch_publish?(message) click to toggle source
# File lib/render_sync/faye_extension.rb, line 23
def batch_publish?(message)
  message['channel'] == "/batch_publish"
end
handle_eror(message, callback) click to toggle source
# File lib/render_sync/faye_extension.rb, line 35
def handle_eror(message, callback)
  message['error'] = 'Invalid authentication token'
  callback.call(message)
end
incoming(message, callback) click to toggle source
# File lib/render_sync/faye_extension.rb, line 4
def incoming(message, callback)
  return handle_eror(message, callback) unless message_authenticated?(message)
  if batch_publish?(message)
    batch_incoming(message, callback)
  else
    single_incoming(message, callback)
  end
end
message_authenticated?(message) click to toggle source
# File lib/render_sync/faye_extension.rb, line 40
def message_authenticated?(message)
  !(message['channel'] !~ %r{^/meta/} && 
    message['ext']['auth_token'] != RenderSync.auth_token)
end
outgoing(message, callback) click to toggle source

IMPORTANT: clear out the auth token so it is not leaked to the client

# File lib/render_sync/faye_extension.rb, line 28
def outgoing(message, callback)
  if message['ext'] && message['ext']['auth_token']
    message['ext'] = {} 
  end
  callback.call(message)
end
single_incoming(message, callback) click to toggle source
# File lib/render_sync/faye_extension.rb, line 19
def single_incoming(message, callback)
  callback.call(message)
end