class Simplepub::FayeExtension
This class is an extension for the Faye::RackAdapter. It is used inside of Simplepub.faye_app.
Public Instance Methods
incoming(message, callback)
click to toggle source
Callback to handle incoming Faye messages. This authenticates both subscribe and publish calls.
# File lib/simplepub/faye_extension.rb, line 7 def incoming(message, callback) if message["channel"] == "/meta/subscribe" authenticate_subscribe(message) elsif message["channel"] !~ %r{^/meta/} authenticate_publish(message) end callback.call(message) end
Private Instance Methods
authenticate_publish(message)
click to toggle source
Ensures the secret token is correct before publishing.
# File lib/simplepub/faye_extension.rb, line 33 def authenticate_publish(message) if Simplepub.config[:secret_token].nil? raise Error, "No secret_token config set, ensure simplepub.yml is loaded properly." elsif message["ext"]["simplepub_token"] != Simplepub.config[:secret_token] message["error"] = "Incorrect token." else message["ext"]["simplepub_token"] = nil end end
authenticate_subscribe(message)
click to toggle source
Ensure the subscription signature is correct and that it has not expired.
# File lib/simplepub/faye_extension.rb, line 19 def authenticate_subscribe(message) subscription = Simplepub.subscription({ :channel => message["subscription"], :timestamp => message["ext"]["simplepub_timestamp"] }) if message["ext"]["simplepub_signature"] != subscription[:signature] message["error"] = "Incorrect signature." elsif Simplepub.signature_expired? message["ext"]["simplepub_timestamp"].to_i message["error"] = "Signature has expired." end end