Class Jabber::PubSub::OAuthServiceHelper
In: lib/xmpp4r/pubsub/helper/oauth_service_helper.rb
Parent: ServiceHelper

PubSub service helper for use with OAuth-authenticated nodes

Methods

Public Class methods

add the OAuth sauce (XEP-0235) The `options` hash may contain the following parameters:

 :oauth_nonce            => nonce (one will be generated otherwise)
 :oauth_timestamp        => timestamp (one will be generated otherwise)
 :oauth_signature_method => signature method (defaults to HMAC-SHA1)
 :oauth_version          => OAuth version (defaults to "1.0")

[Source]

    # File lib/xmpp4r/pubsub/helper/oauth_service_helper.rb, line 37
37:       def self.create_oauth_node(jid, pubsubjid, oauth_consumer, oauth_token, options = {})
38:         require 'oauth'
39: 
40:         request = OAuth::RequestProxy.proxy \
41:           "method" => "iq",
42:           "uri"    => [jid.strip.to_s, pubsubjid.strip.to_s] * "&",
43:           "parameters" => {
44:             "oauth_consumer_key"     => oauth_consumer.key,
45:             "oauth_nonce"            => options[:oauth_nonce] || OAuth::Helper.generate_nonce,
46:             "oauth_timestamp"        => options[:oauth_timestamp] || OAuth::Helper.generate_timestamp,
47:             "oauth_token"            => oauth_token.token,
48:             "oauth_signature_method" => options[:oauth_signature_method] || "HMAC-SHA1",
49:             "oauth_version"          => options[:oauth_version] || "1.0"
50:           }
51: 
52:         request.sign!(:consumer => oauth_consumer, :token => oauth_token)
53: 
54:         # TODO create XMPPElements for OAuth elements
55:         oauth = REXML::Element.new("oauth")
56:         oauth.attributes['xmlns'] = 'urn:xmpp:oauth:0'
57: 
58:         oauth_consumer_key = REXML::Element.new("oauth_consumer_key")
59:         oauth_consumer_key.text = request.oauth_consumer_key
60:         oauth.add(oauth_consumer_key)
61: 
62:         oauth_token_node = REXML::Element.new("oauth_token")
63:         oauth_token_node.text = request.oauth_token
64:         oauth.add(oauth_token_node)
65: 
66:         oauth_signature_method = REXML::Element.new("oauth_signature_method")
67:         oauth_signature_method.text = request.oauth_signature_method
68:         oauth.add(oauth_signature_method)
69: 
70:         oauth_signature = REXML::Element.new("oauth_signature")
71:         oauth_signature.text = request.oauth_signature
72:         oauth.add(oauth_signature)
73: 
74:         oauth_timestamp = REXML::Element.new("oauth_timestamp")
75:         oauth_timestamp.text = request.oauth_timestamp
76:         oauth.add(oauth_timestamp)
77: 
78:         oauth_nonce = REXML::Element.new("oauth_nonce")
79:         oauth_nonce.text = request.oauth_nonce
80:         oauth.add(oauth_nonce)
81: 
82:         oauth_version = REXML::Element.new("oauth_version")
83:         oauth_version.text = request.oauth_version
84:         oauth.add(oauth_version)
85: 
86:         oauth
87:       end

[Source]

    # File lib/xmpp4r/pubsub/helper/oauth_service_helper.rb, line 20
20:       def initialize(stream, pubsubjid, oauth_consumer, oauth_token, options = {})
21:         # imbue the stream with magical OAuth signing powers
22:         stream.extend(OAuthPubSubStreamHelper)
23:         stream.oauth_consumer = oauth_consumer
24:         stream.oauth_token = oauth_token
25:         stream.oauth_options = options
26:         stream.pubsubjid = pubsubjid
27: 
28:         super(stream, pubsubjid)
29:       end

[Validate]