Class Jabber::RPC::Server
In: lib/xmpp4r/rpc/helper/server.rb
Parent: XMLRPC::BasicServer

Methods

Included Modules

XMLRPC::ParserWriterChooseMixin XMLRPC::ParseContentType

Public Class methods

new - creates a new server

[Source]

    # File lib/xmpp4r/rpc/helper/server.rb, line 24
24:       def initialize(stream,class_delim=".")
25:         super(class_delim)
26:         @stream = stream
27:         @stream.add_iq_callback(120,"Helpers::RPCServer") { |iq|
28:           if iq.type == :set and iq.type != :result
29:             handle_iq(iq)
30:             true
31:           else
32:             false
33:           end
34:         }
35:       end

Public Instance methods

handles incoming iqs

iq:[Jabber::IQ] - the jabber iq

[Source]

    # File lib/xmpp4r/rpc/helper/server.rb, line 40
40:       def handle_iq(iq)
41:         if iq.type == :set
42:           if iq.query.kind_of?(IqQueryRPC)
43:             data = iq.query
44:             response = IqQueryRPC.new
45:             data.elements.each { |rpc|
46:               if rpc
47:                 response.typed_add(handle_rpc_requests(rpc))
48:               end
49:             }
50: 
51:             respiq = iq.answer(false)
52:             respiq.type = :result
53:             respiq.add(response)
54:             @stream.send(respiq)
55:           end
56:         end
57:       end

Private Instance methods

handles the rpc requests

takes rpcdata:[String]

[Source]

    # File lib/xmpp4r/rpc/helper/server.rb, line 64
64:       def handle_rpc_requests(rpcdata)
65:         resp = process(rpcdata.to_s)
66:         if resp == nil or resp.size <= 0
67:           raise Jabber::Error.new(:forbidden)
68:         else
69:           return resp
70:         end
71:       end

[Validate]