Class Jabber::PubSub::OAuthServiceHelper
In: lib/xmpp4r/pubsub/helper/oauth_service_helper.rb
Parent: ServiceHelper
Message Presence XMPPStanza Iq XMPPElement ErrorResponse X IqQuery JabberError ComponentAuthenticationFailure ArgumentError InvalidChatState SOCKS5Error ServerError NoNameXmlnsRegistered ServerDisconnected ClientAuthenticationFailure Connection Client Component Connection Client Singleton IdGenerator Comparable JID Enumerable CallbackList Items Publish StandardError REXML::Element Stream XMPPElement Location IqFeature StreamHost IqSiFile IqSiFileRange IqSi StreamHostUsed XRosterItem RosterItem C Body HTML UserItem XMUCUserInvite Configuration Retract IqPubSub Item IqPubSubOwner Event Subscription Unsubscribe Tune XDataField XDataReported XDataTitle XDataInstructions Feature Item Identity IqVcard PubSub::ServiceHelper Helper Helper SOCKS5Bytestreams SOCKS5BytestreamsTarget SOCKS5BytestreamsInitiator SOCKS5BytestreamsServerStreamHost TCPSocket SOCKS5Socket IqQuery IqQueryBytestreams IqQueryRoster IqQueryVersion IqQueryRPC IqQueryMUCOwner IqQueryMUCAdmin IqQueryDiscoItems IqQueryDiscoInfo IqQueryLastActivity IBB IBBTarget IBBInitiator RosterXItem XRoster RosterX X XDelay XMUC XMUCUser XData Responder SimpleResponder Iq IqCommand XMLRPC::ParserWriterChooseMixin Client Server XMLRPC::ParseContentType XMLRPC::BasicServer MUCClient SimpleMUCClient MUC::UserItem XMUCUserItem IqQueryMUCAdminItem XParent SubscriptionConfig NodeConfig OwnerNodeConfig EventItems ServiceHelper OAuthServiceHelper NodeHelper EventItem Base Anonymous DigestMD5 Plain FileSource Base Bot Callback StreamParser Semaphore SOCKS5BytestreamsPeer SOCKS5BytestreamsServer IBBQueueItem Helper Responder Helper Listener MUCBrowser NodeBrowser ListenerMocker Helper Responder Helper Helper Helper lib/xmpp4r/message.rb lib/xmpp4r/connection.rb lib/xmpp4r/xmppstanza.rb lib/xmpp4r/iq.rb lib/xmpp4r/callbacks.rb lib/xmpp4r/idgenerator.rb lib/xmpp4r/stream.rb lib/xmpp4r/client.rb lib/xmpp4r/jid.rb lib/xmpp4r/x.rb lib/xmpp4r/streamparser.rb lib/xmpp4r/semaphore.rb lib/xmpp4r/errors.rb lib/xmpp4r/component.rb lib/xmpp4r/presence.rb lib/xmpp4r/xmppelement.rb lib/xmpp4r/query.rb XParent lib/xmpp4r/location/helper/helper.rb lib/xmpp4r/location/location.rb UserLocation lib/xmpp4r/feature_negotiation/iq/feature.rb FeatureNegotiation lib/xmpp4r/bytestreams/iq/si.rb lib/xmpp4r/bytestreams/helper/ibb/initiator.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb lib/xmpp4r/bytestreams/iq/bytestreams.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb lib/xmpp4r/bytestreams/helper/ibb/target.rb lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb lib/xmpp4r/bytestreams/helper/ibb/base.rb Bytestreams lib/xmpp4r/roster/x/roster.rb lib/xmpp4r/roster/helper/roster.rb lib/xmpp4r/roster/iq/roster.rb Roster lib/xmpp4r/version/helper/responder.rb lib/xmpp4r/version/helper/simpleresponder.rb lib/xmpp4r/version/iq/version.rb Version lib/xmpp4r/command/iq/command.rb lib/xmpp4r/command/helper/responder.rb Command lib/xmpp4r/caps/helper/helper.rb lib/xmpp4r/caps/c.rb Caps lib/xmpp4r/reliable.rb Reliable lib/xmpp4r/delay/x/delay.rb Delay lib/xmpp4r/xhtml/html.rb XHTML lib/xmpp4r/rpc/helper/server.rb lib/xmpp4r/rpc/helper/client.rb lib/xmpp4r/rpc/iq/rpc.rb RPC lib/xmpp4r/muc/iq/mucadminitem.rb lib/xmpp4r/muc/x/muc.rb lib/xmpp4r/muc/item.rb lib/xmpp4r/muc/helper/simplemucclient.rb lib/xmpp4r/muc/iq/mucadmin.rb lib/xmpp4r/muc/helper/mucbrowser.rb lib/xmpp4r/muc/x/mucuseritem.rb lib/xmpp4r/muc/x/mucuserinvite.rb lib/xmpp4r/muc/iq/mucowner.rb lib/xmpp4r/muc/helper/mucclient.rb MUC lib/xmpp4r/pubsub/children/item.rb lib/xmpp4r/pubsub/children/configuration.rb lib/xmpp4r/pubsub/children/subscription.rb lib/xmpp4r/pubsub/helper/servicehelper.rb lib/xmpp4r/pubsub/children/unsubscribe.rb lib/xmpp4r/pubsub/children/publish.rb lib/xmpp4r/pubsub/helper/oauth_service_helper.rb lib/xmpp4r/pubsub/children/event.rb lib/xmpp4r/pubsub/iq/pubsub.rb lib/xmpp4r/pubsub/children/retract.rb lib/xmpp4r/pubsub/helper/nodebrowser.rb lib/xmpp4r/pubsub/helper/nodehelper.rb lib/xmpp4r/pubsub/children/items.rb lib/xmpp4r/pubsub/children/subscription_config.rb lib/xmpp4r/pubsub/children/node_config.rb OAuthPubSubStreamHelper PubSub lib/xmpp4r/httpbinding/client.rb HTTPBinding lib/xmpp4r/tune/helper/helper.rb lib/xmpp4r/tune/tune.rb UserTune lib/xmpp4r/sasl.rb SASL lib/xmpp4r/test/listener_mocker.rb Test lib/xmpp4r/dataforms/x/data.rb Dataforms lib/xmpp4r/discovery/helper/helper.rb lib/xmpp4r/discovery/iq/discoinfo.rb lib/xmpp4r/discovery/helper/responder.rb lib/xmpp4r/discovery/iq/discoitems.rb Discovery lib/xmpp4r/bytestreams/helper/filetransfer.rb TransferSource FileTransfer lib/xmpp4r/last/helper/helper.rb lib/xmpp4r/last/iq/last.rb LastActivity lib/xmpp4r/framework/base.rb lib/xmpp4r/framework/bot.rb Framework lib/xmpp4r/vcard/helper/vcard.rb lib/xmpp4r/vcard/iq/vcard.rb Vcard Jabber dot/m_110_0.png

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]