Class: EtherpadCollaboration

Inherits:
Object
  • Object
show all
Defined in:
lib/etherpad_canvas/etherpad_collaboration.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.generate_url(user, collaboration) ⇒ Object



50
51
52
53
54
55
56
57
58
59
# 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) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 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

Instance Method Details

#initialize_documentObject



22
23
24
25
26
27
28
# 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