| 1 |
#!/usr/bin/env ruby |
|---|
| 2 |
|
|---|
| 3 |
require 'soap/driver' |
|---|
| 4 |
|
|---|
| 5 |
require 'soap/XMLSchemaDatatypes1999' |
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 |
class SampleClient < Application |
|---|
| 9 |
|
|---|
| 10 |
private |
|---|
| 11 |
|
|---|
| 12 |
AppName = 'SampleClient' |
|---|
| 13 |
|
|---|
| 14 |
NS1 = 'urn:i3solutions-delayed-quotes' |
|---|
| 15 |
NS2 = 'urn:AddressFetcher' |
|---|
| 16 |
|
|---|
| 17 |
def initialize( server, proxy ) |
|---|
| 18 |
super( AppName ) |
|---|
| 19 |
@server = server |
|---|
| 20 |
@proxy = proxy |
|---|
| 21 |
@logId = Time.now.gmtime.strftime( "%Y-%m-%dT%X+0000" ) |
|---|
| 22 |
# setLog( AppName.dup << '.log', 'weekly', nil ) |
|---|
| 23 |
@drv1 = nil |
|---|
| 24 |
@drv2 = nil |
|---|
| 25 |
end |
|---|
| 26 |
|
|---|
| 27 |
def run() |
|---|
| 28 |
#@log.sevThreshold = SEV_DEBUG |
|---|
| 29 |
#@log.sevThreshold = SEV_INFO |
|---|
| 30 |
@log.sevThreshold = SEV_WARN |
|---|
| 31 |
|
|---|
| 32 |
# Driver initialize and method definition |
|---|
| 33 |
|
|---|
| 34 |
@drv1 = SOAP::Driver.new( @log, @logId, NS1, @server, @proxy ) |
|---|
| 35 |
@drv1.addMethod( 'getQuote', 'symbol' ) |
|---|
| 36 |
|
|---|
| 37 |
@drv2 = SOAP::Driver.new( @log, @logId, NS2, @server, @proxy ) |
|---|
| 38 |
@drv2.addMethod( 'getAddressFromName', 'nameToLookup' ) |
|---|
| 39 |
@drv2.addMethod( 'addEntry', 'nameToRegister', 'address' ) |
|---|
| 40 |
|
|---|
| 41 |
# Method invocation |
|---|
| 42 |
|
|---|
| 43 |
puts @drv1.getQuote( "IBM" ) |
|---|
| 44 |
|
|---|
| 45 |
address = @drv2.getAddressFromName( "John B. Good" ) |
|---|
| 46 |
dumpAddress( address ) |
|---|
| 47 |
|
|---|
| 48 |
phoneNumber = PhoneNumber.new( 987, '654', '3210' ) |
|---|
| 49 |
address = Address.new( 123, 'STREET', 'CITY', 'NY', 99999, phoneNumber ) |
|---|
| 50 |
result = @drv2.addEntry( 'NaHi', address ) |
|---|
| 51 |
puts 'NaHi has been added.' |
|---|
| 52 |
|
|---|
| 53 |
address = @drv2.getAddressFromName( "NaHi" ) |
|---|
| 54 |
dumpAddress( address ) |
|---|
| 55 |
|
|---|
| 56 |
return 0 |
|---|
| 57 |
end |
|---|
| 58 |
|
|---|
| 59 |
def dumpAddress( addr ) |
|---|
| 60 |
phone = addr.phoneNumber |
|---|
| 61 |
puts <<EOS |
|---|
| 62 |
#{ addr.streetNum } #{ addr.streetName } |
|---|
| 63 |
#{ addr.city }, #{ addr.state } #{ addr.zip } |
|---|
| 64 |
(#{ phone.areaCode }) #{ phone.exchange }-#{ phone.number } |
|---|
| 65 |
EOS |
|---|
| 66 |
end |
|---|
| 67 |
|
|---|
| 68 |
### |
|---|
| 69 |
## Other utility methods |
|---|
| 70 |
# |
|---|
| 71 |
def log( sev, message ) |
|---|
| 72 |
@log.add( sev, "<#{ @logId }> #{ message }", @appName ) if @log |
|---|
| 73 |
end |
|---|
| 74 |
end |
|---|
| 75 |
|
|---|
| 76 |
|
|---|
| 77 |
class Address |
|---|
| 78 |
@@typeName = 'address' |
|---|
| 79 |
@@typeNamespace = 'urn:ibm-soap-address-demo' |
|---|
| 80 |
|
|---|
| 81 |
attr_accessor :streetNum, :streetName, :city, :state, :zip, :phoneNumber |
|---|
| 82 |
def initialize( streetNum = nil, streetName = nil, city = nil, state = nil, zip = nil, phoneNumber = nil ) |
|---|
| 83 |
@streetNum = streetNum |
|---|
| 84 |
@streetName = streetName |
|---|
| 85 |
@city = city |
|---|
| 86 |
@state = state |
|---|
| 87 |
@zip = zip |
|---|
| 88 |
@phoneNumber = phoneNumber |
|---|
| 89 |
end |
|---|
| 90 |
end |
|---|
| 91 |
|
|---|
| 92 |
class PhoneNumber |
|---|
| 93 |
@@typeName = 'phone' |
|---|
| 94 |
@@typeNamespace = 'urn:ibm-soap-address-demo' |
|---|
| 95 |
|
|---|
| 96 |
attr_accessor :areaCode, :exchange, :number |
|---|
| 97 |
def initialize( areaCode = nil, exchange = nil, number = nil ) |
|---|
| 98 |
@exchange = exchange |
|---|
| 99 |
@areaCode = areaCode |
|---|
| 100 |
@number = number |
|---|
| 101 |
end |
|---|
| 102 |
end |
|---|
| 103 |
|
|---|
| 104 |
server = ARGV.shift or raise ArgumentError.new( 'Target URL was not given.' ) |
|---|
| 105 |
proxy = ARGV.shift || nil |
|---|
| 106 |
app = SampleClient.new( server, proxy ).start() |
|---|