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