File: server.rb

package info (click to toggle)
ruby-soap4r 2.0.5-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,032 kB
  • sloc: ruby: 52,729; xml: 266; sh: 42; javascript: 20; makefile: 13; perl: 10
file content (43 lines) | stat: -rw-r--r-- 923 bytes parent folder | download | duplicates (5)
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
#!/usr/bin/env ruby

# SOAP server cannot use WEBrick's httpauth feature for now...
require 'soap/rpc/standaloneServer'

class Server < SOAP::RPC::StandaloneServer
  Namespace = 'urn:test'

  class Servant
    @@counter = 0

    def self.create
      new(@@counter += 1)
    end

    def initialize(counter)
      @counter = counter
    end

    def echo(msg)
      "echo from servant ##{@counter} (#{SOAP::RPC::SOAPlet.user}): #{msg}"
    end
  end

  def initialize(*arg)
    super
    add_rpc_request_servant(Servant)
  end

  def on_init
    userdb_file = File.join(File.dirname(__FILE__), 'htpasswd')
    userdb = WEBrick::HTTPAuth::Htpasswd.new(userdb_file)
    self.authenticator = WEBrick::HTTPAuth::BasicAuth.new(:Realm => 'auth', :UserDB => userdb)
  end
end

if $0 == __FILE__
  server = Server.new('tst', Server::Namespace, '0.0.0.0', 7000)
  trap(:INT) do
    server.shutdown
  end
  status = server.start
end