Class Jabber::RPC::Client
In: lib/xmpp4r/rpc/helper/client.rb
Parent: Object
Message Presence XMPPStanza Iq XMPPElement ErrorResponse X IqQuery JabberError ComponentAuthenticationFailure ArgumentError SOCKS5Error ServerError NoNameXmlnsRegistered ClientAuthenticationFailure Connection Client Component Client Singleton IdGenerator Comparable JID StandardError REXML::Element Stream IqQuery IqQueryVersion IqQueryRoster IqQueryBytestreams IqQueryRPC IqQueryMUCOwner IqQueryMUCAdmin IqQueryDiscoItems IqQueryDiscoInfo Responder SimpleResponder XRosterItem RosterXItem XMPPElement RosterItem IqFeature StreamHost IqSiFile IqSiFileRange IqSi StreamHostUsed C Body HTML UserItem XMUCUserInvite Tune Configuration Items Item IqPubSub Publish Event IqPubSubOwner Subscription Unsubscribe Feature Item Identity XDataField XDataReported XDataTitle XDataInstructions IqVcard XRoster RosterX X XMUC XMUCUser XDelay XData Iq IqCommand SOCKS5Bytestreams SOCKS5BytestreamsTarget SOCKS5BytestreamsInitiator SOCKS5BytestreamsServerStreamHost TCPSocket SOCKS5Socket IBB IBBTarget IBBInitiator XMLRPC::ParserWriterChooseMixin Client Server XMLRPC::ParseContentType XMLRPC::BasicServer MUCClient SimpleMUCClient MUC::UserItem XMUCUserItem IqQueryMUCAdminItem XParent Base Anonymous DigestMD5 Plain PubSub::ServiceHelper Helper SubscriptionConfig NodeConfig OwnerNodeConfig EventItems EventItem ServiceHelper NodeHelper FileSource Base Bot CallbackList Callback StreamParser Semaphore Helper Responder SOCKS5BytestreamsPeer SOCKS5BytestreamsServer IBBQueueItem Helper MUCBrowser NodeBrowser Responder 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/version/helper/responder.rb lib/xmpp4r/version/helper/simpleresponder.rb lib/xmpp4r/version/iq/version.rb Version lib/xmpp4r/roster/x/roster.rb lib/xmpp4r/roster/helper/roster.rb lib/xmpp4r/roster/iq/roster.rb Roster lib/xmpp4r/feature_negotiation/iq/feature.rb FeatureNegotiation lib/xmpp4r/command/iq/command.rb lib/xmpp4r/command/helper/responder.rb Command 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/caps/helper/helper.rb lib/xmpp4r/caps/c.rb Caps 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/delay/x/delay.rb Delay lib/xmpp4r/sasl.rb SASL lib/xmpp4r/tune/helper/helper.rb lib/xmpp4r/tune/tune.rb UserTune 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/children/event.rb lib/xmpp4r/pubsub/iq/pubsub.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 PubSub lib/xmpp4r/httpbinding/client.rb HTTPBinding lib/xmpp4r/discovery/iq/discoinfo.rb lib/xmpp4r/discovery/helper/responder.rb lib/xmpp4r/discovery/iq/discoitems.rb Discovery lib/xmpp4r/dataforms/x/data.rb Dataforms lib/xmpp4r/bytestreams/helper/filetransfer.rb TransferSource FileTransfer lib/xmpp4r/vcard/helper/vcard.rb lib/xmpp4r/vcard/iq/vcard.rb Vcard lib/xmpp4r/framework/base.rb lib/xmpp4r/framework/bot.rb Framework Jabber dot/m_99_0.png

Methods

Included Modules

XMLRPC::ParserWriterChooseMixin XMLRPC::ParseContentType

Attributes

my_jid  [RW] 

Public Class methods

xmppstream

stream:[Stream]

jid where you want to send the rpc requests to

jid:[JID] rpcserver@jabberserver/ressource

[Source]

    # File lib/xmpp4r/rpc/helper/client.rb, line 28
28:       def initialize(stream,jid)
29:         @jid    = JID.new(jid)
30:         @my_jid = stream.jid
31:         @stream =  stream
32:         @parser = nil
33:         @create = XMLRPC::Create.new
34:       end

Public Instance methods

[Source]

    # File lib/xmpp4r/rpc/helper/client.rb, line 44
44:       def call(method, *args)
45:         ok, param = call2(method, *args)
46:         if ok
47:           param
48:         else
49:           raise param
50:         end
51:       end

[Source]

    # File lib/xmpp4r/rpc/helper/client.rb, line 53
53:       def call2(method, *args)
54:         request = @create.methodCall(method, *args)
55:         data = do_rpc(request)
56:         parser().parseMethodResponse(data)
57:       end

[Source]

    # File lib/xmpp4r/rpc/helper/client.rb, line 78
78:       def do_rpc(xmlrpc)
79:         iq = Iq.new(:set, @jid)
80:         iq.from = @my_jid
81:         iq.id = IdGenerator::generate_id
82:         rpcquery = iq.add(IqQueryRPC.new)
83:         rpcquery.typed_add(xmlrpc)
84: 
85:         result = nil
86:         @stream.send_with_id(iq) do |iqreply|
87:           if iqreply.query.kind_of?(IqQueryRPC)
88:             result = iqreply.query.to_s
89:           end
90:         end
91: 
92:         result
93:       end

automatically trys to find a method thanx to eric cestari :)

[Source]

    # File lib/xmpp4r/rpc/helper/client.rb, line 39
39:       def method_missing(methodname, *args)
40:         send("call", methodname,*args)
41:       end

adds multi rpcalls to the query

methods:[Array]

[Source]

    # File lib/xmpp4r/rpc/helper/client.rb, line 62
62:       def multicall(*methods)
63:         ok, params = multicall2(*methods)
64:         if ok
65:           params
66:         else
67:           raise params
68:         end
69:       end

generate a multicall

methods:[Array]

[Source]

    # File lib/xmpp4r/rpc/helper/client.rb, line 74
74:       def multicall2(*methods)
75:         gen_multicall(methods)
76:       end

Private Instance methods

[Source]

     # File lib/xmpp4r/rpc/helper/client.rb, line 97
 97:       def gen_multicall(methods=[])
 98:         ok, params = call2("system.multicall",
 99:           methods.collect { |m|
100:             {
101:               'methodName' => m[0],
102:               'params' => m[1..-1]
103:             }
104:           }
105:         )
106: 
107:         if ok
108:           params = params.collect{ |param|
109:             if param.is_a? Array
110:               param[0]
111:             elsif param.is_a? Hash
112:               XMLRPC::FaultException.new(param["faultCode"], param["faultString"])
113:             else
114:               raise "Wrong multicall return value"
115:             end
116:           }
117:         end
118: 
119:         return ok, params
120:       end

[Validate]