class EtherpadCollaboration

Public Class Methods

generate_url(user, collaboration) click to toggle source
# File lib/etherpad_canvas/etherpad_collaboration.rb, line 50
def self.generate_url(user, collaboration)
  timestamp = (Time.now.to_f * 1000).to_i
  query = {
    timestamp: timestamp,
    user_id: user.id,
    username: user.name,
  }.to_query

  "#{collaboration.url}?#{query}"
end
sign_url(user, collaboration) click to toggle source
# File lib/etherpad_canvas/etherpad_collaboration.rb, line 30
def self.sign_url(user, collaboration)
  plugin = PluginSetting.find_by(name: "etherpad_canvas")
  etherpad_plugin = PluginSetting.find_by(name: "etherpad")
  domain = etherpad_plugin.settings["domain"].split("/")[0]

  if !plugin.disabled
    key = plugin.settings[:key]

    url = generate_url user, collaboration

    url_sans_http = url.split(domain)[1]

    digest = OpenSSL::Digest.new("sha1")

    hmac = OpenSSL::HMAC.hexdigest(digest, key, url_sans_http)

    "#{url}&signature=#{hmac}"
  end
end

Public Instance Methods

initialize_document() click to toggle source
# File lib/etherpad_canvas/etherpad_collaboration.rb, line 22
def initialize_document
  scheme = "https"
  if PluginSetting.find_by(name: "etherpad_canvas").settings[:insecure] == "1"
    scheme = "http"
  end
  self.url ||= "#{scheme}://#{EtherpadCollaboration.config[:domain]}/p/i-#{uuid}"
end