Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/branches/1_5/sample/howto/filter/server.rb

Revision 1848, 1.3 kB (checked in by nahi, 2 years ago)
  • forgot to add.
Line 
1 require 'soap/rpc/standaloneServer'
2 require 'soap/filter'
3
4
5 class FilterTestServer < SOAP::RPC::StandaloneServer
6   class Servant
7     def self.create
8       new
9     end
10
11     def echo(amt)
12       amt
13     end
14   end
15
16   class ServerFilter1 < SOAP::Filter::Handler
17     # 15 -> 30
18     def on_outbound(envelope, opt)
19       unless envelope.body.is_fault
20         node = envelope.body.root_node
21         node.retval = SOAP::SOAPInt.new(node.retval.data * 2)
22         node.elename = XSD::QName.new(nil, 'return')
23       end
24       envelope
25     end
26
27     # 4 -> 5
28     def on_inbound(xml, opt)
29       xml = xml.sub(/4/, '5')
30       xml
31     end
32   end
33
34   class ServerFilter2 < SOAP::Filter::Handler
35     # 5 -> 15
36     def on_outbound(envelope, opt)
37       unless envelope.body.is_fault
38         node = envelope.body.root_node
39         node.retval = SOAP::SOAPInt.new(node.retval.data + 10)
40         node.elename = XSD::QName.new(nil, 'return')
41       end
42       envelope
43     end
44
45     # 5 -> 6
46     def on_inbound(xml, opt)
47       xml = xml.sub(/5/, '6')
48       xml
49     end
50   end
51
52   def initialize(*arg)
53     super
54     add_rpc_servant(Servant.new, "urn:filter")
55     self.filterchain << ServerFilter1.new
56     self.filterchain << ServerFilter2.new
57   end
58 end
59
60
61 if __FILE__ == $0
62   server = FilterTestServer.new(self.class.name, nil, '0.0.0.0', 7171)
63   trap("INT") do
64     server.shutdown
65   end
66   server.start
67 end
Note: See TracBrowser for help on using the browser.