Module: DisqusRails::Helpers

Included in:
ApplicationHelper
Defined in:
lib/disqus_rails/helpers.rb

Instance Method Summary collapse

Instance Method Details

#disqus_init(attributes = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/disqus_rails/helpers.rb', line 7

def disqus_init(attributes={})
  if attributes.has_key?(:short_name)
    DisqusRails.const_set('SHORT_NAME', attributes[:short_name])
  else
    attributes[:short_name] = DisqusRails::SHORT_NAME
  end

  if attributes.has_key?(:public_key)
    DisqusRails.const_set('PUBLIC_KEY', attributes[:public_key])
  else
    attributes[:public_key] = DisqusRails::PUBLIC_KEY
  end

  if attributes.has_key?(:secret_key)
    DisqusRails.const_set('SECRET_KEY', attributes[:secret_key])
  end

  if attributes.has_key?(:access_token)
    DisqusRails.const_set('ACCESS_TOKEN', attributes[:access_token])
  end

  if attributes.has_key?(:disquser) && attributes[:disquser].respond_to?(:disqus_params)
    attributes[:remote_auth_s3] = disqus_sso_script attributes[:disquser].disqus_params()
  end

  attributes.delete :disquser
  attributes.delete :secret_key
  attributes.delete :access_token

  javascript_tag %Q"$(document).ready(function(){
                      window.disqus_rails = new DisqusRails(#{attributes.to_json});
                    });"
end

#disqus_sso_script(disquser) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/disqus_rails/helpers.rb', line 42

def disqus_sso_script(disquser)
   # encode the data to base64
  message = Base64.strict_encode64(disquser.to_json)

  # generate a timestamp for signing the message
  timestamp = Time.now.to_i

  # generate our hmac signature
  digest  = OpenSSL::Digest::Digest.new('sha1')
  signature = OpenSSL::HMAC.hexdigest(digest, SECRET_KEY, "#{message} #{timestamp}")

  # return a script tag to insert the sso message
  "#{message} #{signature} #{timestamp}"
end

#disqus_thread(disqusable_id = nil, disqusable_title = nil) ⇒ Object



58
59
60
61
62
# File 'lib/disqus_rails/helpers.rb', line 58

def disqus_thread(disqusable_id=nil, disqusable_title=nil)
  javascript_tag %Q"$(document).ready(function(){
                      disqus_rails.draw_thread(\"#{disqusable_id}\", \"#{disqusable_title}\");
                    });"
end