File: apacheClient.rb

package info (click to toggle)
soap4r 1.4.8-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 1,472 kB
  • ctags: 2,206
  • sloc: ruby: 19,295; makefile: 58; sh: 41; perl: 10
file content (106 lines) | stat: -rwxr-xr-x 2,620 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env ruby

require 'soap/driver'

require 'soap/XMLSchemaDatatypes1999'


class SampleClient < Application

  private

  AppName = 'SampleClient'

  NS1 = 'urn:i3solutions-delayed-quotes'
  NS2 = 'urn:AddressFetcher'

  def initialize( server, proxy )
    super( AppName )
    @server = server
    @proxy = proxy
    @logId = Time.now.gmtime.strftime( "%Y-%m-%dT%X+0000" )
#    setLog( AppName.dup << '.log', 'weekly', nil )
    @drv1 = nil
    @drv2 = nil
  end

  def run()
    #@log.sevThreshold = SEV_DEBUG
    #@log.sevThreshold = SEV_INFO
    @log.sevThreshold = SEV_WARN

    # Driver initialize and method definition

    @drv1 = SOAP::Driver.new( @log, @logId, NS1, @server, @proxy )
    @drv1.addMethod( 'getQuote', 'symbol' )

    @drv2 = SOAP::Driver.new( @log, @logId, NS2, @server, @proxy )
    @drv2.addMethod( 'getAddressFromName', 'nameToLookup' )
    @drv2.addMethod( 'addEntry', 'nameToRegister', 'address' )

    # Method invocation

    puts @drv1.getQuote( "IBM" )

    address = @drv2.getAddressFromName( "John B. Good" )
    dumpAddress( address )

    phoneNumber = PhoneNumber.new( 987, '654', '3210' )
    address = Address.new( 123, 'STREET', 'CITY', 'NY', 99999, phoneNumber )
    result = @drv2.addEntry( 'NaHi', address )
    puts 'NaHi has been added.'

    address = @drv2.getAddressFromName( "NaHi" )
    dumpAddress( address )

    return 0
  end

  def dumpAddress( addr )
    phone = addr.phoneNumber
    puts <<EOS
#{ addr.streetNum } #{ addr.streetName }
#{ addr.city }, #{ addr.state } #{ addr.zip }
(#{ phone.areaCode }) #{ phone.exchange }-#{ phone.number }
EOS
  end

  ###
  ## Other utility methods
  #
  def log( sev, message )
    @log.add( sev, "<#{ @logId }> #{ message }", @appName ) if @log
  end
end


class Address
  @@typeName = 'address'
  @@typeNamespace = 'urn:ibm-soap-address-demo'

  attr_accessor :streetNum, :streetName, :city, :state, :zip, :phoneNumber
  def initialize( streetNum = nil, streetName = nil, city = nil, state = nil, zip = nil, phoneNumber = nil )
    @streetNum = streetNum
    @streetName = streetName
    @city = city
    @state = state
    @zip = zip
    @phoneNumber = phoneNumber
  end
end

class PhoneNumber
  @@typeName = 'phone'
  @@typeNamespace = 'urn:ibm-soap-address-demo'

  attr_accessor :areaCode, :exchange, :number
  def initialize( areaCode = nil, exchange = nil, number = nil )
    @exchange = exchange
    @areaCode = areaCode
    @number = number
  end
end

server = ARGV.shift or raise ArgumentError.new( 'Target URL was not given.' )
proxy = ARGV.shift || nil
app = SampleClient.new( server, proxy ).start()