|
Revision 1848, 1.3 kB
(checked in by nahi, 2 years ago)
|
|
| 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 |
|---|