| Class | Jabber::PubSub::OAuthServiceHelper |
| In: |
lib/xmpp4r/pubsub/helper/oauth_service_helper.rb
|
| Parent: | ServiceHelper |
PubSub service helper for use with OAuth-authenticated nodes
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")
# 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
# 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