xmlrpcs 0.1 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +43 -0
- data/test/xmlrpc/tc_tcp.rb +23 -9
- data/test/xmlrpc/tc_unix.rb +20 -10
- metadata +4 -4
- data/README +0 -24
data/Rakefile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
Gem::manage_gems
|
3
|
+
require 'rake/gempackagetask'
|
4
|
+
require 'rake/testtask'
|
5
|
+
require 'rake/packagetask'
|
6
|
+
require 'rake/rdoctask'
|
7
|
+
|
8
|
+
spec = Gem::Specification.new do |s|
|
9
|
+
s.name = "xmlrpcs"
|
10
|
+
s.version = "0.1.1"
|
11
|
+
s.author = "Dario Meloni"
|
12
|
+
s.email = "mellon85@gmail.com"
|
13
|
+
s.homepage = "http://rubyforge.org/projects/xmlrpcs/"
|
14
|
+
s.rubyforge_project = "xmlrpcs"
|
15
|
+
s.platform = Gem::Platform::RUBY
|
16
|
+
s.summary = "Changes sockets for the XMLRPC Library"
|
17
|
+
s.files = FileList['lib/**/*.rb', 'test/**/*.rb', 'Rakefile'].to_a
|
18
|
+
s.require_path = "lib"
|
19
|
+
s.test_files = Dir.glob('test/**/tc_*.rb')
|
20
|
+
s.has_rdoc = true
|
21
|
+
end
|
22
|
+
|
23
|
+
Rake::GemPackageTask.new(spec) do |p|
|
24
|
+
p.gem_spec = spec
|
25
|
+
p.need_tar = true
|
26
|
+
p.need_zip = true
|
27
|
+
end
|
28
|
+
|
29
|
+
Rake::RDocTask.new do |rd|
|
30
|
+
rd.rdoc_dir = "rdoc"
|
31
|
+
rd.rdoc_files.include("./lib/**/*.rb")
|
32
|
+
rd.options = %w(-ap)
|
33
|
+
end
|
34
|
+
|
35
|
+
task :distclean => [:clobber_package, :clobber_rdoc]
|
36
|
+
task :dist => [:repackage, :gem, :rdoc]
|
37
|
+
task :clean => [:distclean]
|
38
|
+
task :default => [ :test, :dist ]
|
39
|
+
|
40
|
+
#task :default => "pkg/#{spec.name}-#{spec.version}.gem" do
|
41
|
+
# puts "generated latest version"
|
42
|
+
#end
|
43
|
+
|
data/test/xmlrpc/tc_tcp.rb
CHANGED
@@ -2,11 +2,13 @@
|
|
2
2
|
# Author: Dario Meloni <mellon85@gmail.com>
|
3
3
|
|
4
4
|
require 'test/unit'
|
5
|
-
require '
|
5
|
+
require 'rubygems'
|
6
|
+
require 'xmlrpc/xmlrpcs'
|
6
7
|
require 'xmlrpc/server'
|
7
8
|
require 'socket'
|
8
9
|
|
9
10
|
$test_port="20000"
|
11
|
+
$test_host="localhost"
|
10
12
|
|
11
13
|
class TCPXMLClient < XMLRPC::ClientS
|
12
14
|
def new_socket(info,async)
|
@@ -26,8 +28,17 @@ end
|
|
26
28
|
|
27
29
|
class TCPXMLServer < XMLRPC::BasicServer
|
28
30
|
|
31
|
+
attr_reader :host
|
32
|
+
attr_reader :port
|
33
|
+
|
34
|
+
def initialize( host, port )
|
35
|
+
@host = host
|
36
|
+
@port = port
|
37
|
+
@server = TCPServer.new(@host,@port)
|
38
|
+
super()
|
39
|
+
end
|
40
|
+
|
29
41
|
def serve()
|
30
|
-
@server = TCPServer.new('localhost',20000)
|
31
42
|
catch (:exit_serve) {
|
32
43
|
while(true)
|
33
44
|
@server.listen(5)
|
@@ -41,15 +52,14 @@ class TCPXMLServer < XMLRPC::BasicServer
|
|
41
52
|
end
|
42
53
|
}
|
43
54
|
end
|
44
|
-
|
45
|
-
attr_accessor :path
|
46
55
|
end
|
47
56
|
|
48
57
|
class TC_xmlrpcs_tcp < Test::Unit::TestCase
|
49
58
|
def setup
|
50
|
-
@s = TCPXMLServer.new()
|
59
|
+
@s = TCPXMLServer.new($test_host,$test_port)
|
51
60
|
@s.add_introspection
|
52
|
-
@s.
|
61
|
+
@s.add_multicall
|
62
|
+
@s.add_handler("add") do |a,b|
|
53
63
|
a+b
|
54
64
|
end
|
55
65
|
@t = Thread.new do
|
@@ -62,8 +72,12 @@ class TC_xmlrpcs_tcp < Test::Unit::TestCase
|
|
62
72
|
end
|
63
73
|
|
64
74
|
def test_create
|
65
|
-
|
66
|
-
assert(
|
67
|
-
|
75
|
+
client = TCPXMLClient.new({"host" => $test_host, "port" => "#{$test_port}"})
|
76
|
+
assert(client.call("add",2,3) == 5, "Failed calling add")
|
77
|
+
proxy = client.proxy
|
78
|
+
assert(proxy.add(1,4) == 5,"Failed using the proxy")
|
79
|
+
a, b = client.multicall(["add",3,2],["add",4,1])
|
80
|
+
assert( a == 5 && b == 5, "Failed multicall")
|
81
|
+
assert(client.call("system.listMethods"),"Failed system.listMethods")
|
68
82
|
end
|
69
83
|
end
|
data/test/xmlrpc/tc_unix.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
#! /usr/bin/ruby
|
2
2
|
# Author: Dario Meloni <mellon85@gmail.com>
|
3
3
|
|
4
|
+
require 'rubygems'
|
4
5
|
require 'test/unit'
|
5
|
-
require 'xmlrpcs'
|
6
|
+
require 'xmlrpc/xmlrpcs'
|
6
7
|
require 'xmlrpc/server'
|
7
8
|
require 'socket'
|
8
9
|
|
9
|
-
$socket_path="test.sock"
|
10
|
+
$socket_path="/tmp/test.sock"
|
10
11
|
|
11
12
|
class UnixXMLClient < XMLRPC::ClientS
|
12
13
|
def new_socket(info,async)
|
@@ -26,8 +27,15 @@ end
|
|
26
27
|
|
27
28
|
class UnixXMLServer < XMLRPC::BasicServer
|
28
29
|
|
29
|
-
|
30
|
+
attr_reader :path
|
31
|
+
|
32
|
+
def initialize( path )
|
33
|
+
super()
|
34
|
+
@path = path
|
30
35
|
@server = UNIXServer.new(@path)
|
36
|
+
end
|
37
|
+
|
38
|
+
def serve()
|
31
39
|
catch (:exit_serve) {
|
32
40
|
while(true)
|
33
41
|
@server.listen(5)
|
@@ -41,15 +49,13 @@ class UnixXMLServer < XMLRPC::BasicServer
|
|
41
49
|
end
|
42
50
|
}
|
43
51
|
end
|
44
|
-
|
45
|
-
attr_accessor :path
|
46
52
|
end
|
47
53
|
|
48
54
|
class TC_xmlrpcs_unix < Test::Unit::TestCase
|
49
55
|
def setup
|
50
|
-
@s = UnixXMLServer.new()
|
51
|
-
@s.path=$socket_path
|
56
|
+
@s = UnixXMLServer.new($socket_path)
|
52
57
|
@s.add_introspection
|
58
|
+
@s.add_multicall
|
53
59
|
@s.add_handler("test.add") do |a,b|
|
54
60
|
a+b
|
55
61
|
end
|
@@ -64,8 +70,12 @@ class TC_xmlrpcs_unix < Test::Unit::TestCase
|
|
64
70
|
end
|
65
71
|
|
66
72
|
def test_create
|
67
|
-
|
68
|
-
assert(
|
69
|
-
|
73
|
+
client = UnixXMLClient.new($socket_path)
|
74
|
+
assert(client.call("test.add",2,3) == 5, "Failed calling add")
|
75
|
+
proxy = client.proxy "test"
|
76
|
+
assert(proxy.add(1,4) == 5,"Failed using the proxy")
|
77
|
+
a, b = client.multicall(["test.add",3,2],["test.add",4,1])
|
78
|
+
assert( a == 5 && b == 5, "Failed multicall")
|
79
|
+
assert(client.call("system.listMethods"),"Failed system.listMethods")
|
70
80
|
end
|
71
81
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xmlrpcs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dario Meloni
|
@@ -19,13 +19,13 @@ executables: []
|
|
19
19
|
|
20
20
|
extensions: []
|
21
21
|
|
22
|
-
extra_rdoc_files:
|
23
|
-
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
24
|
files:
|
25
25
|
- lib/xmlrpc/xmlrpcs.rb
|
26
26
|
- test/xmlrpc/tc_tcp.rb
|
27
27
|
- test/xmlrpc/tc_unix.rb
|
28
|
-
-
|
28
|
+
- Rakefile
|
29
29
|
has_rdoc: true
|
30
30
|
homepage: http://rubyforge.org/projects/xmlrpcs/
|
31
31
|
post_install_message:
|
data/README
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
This gems allow to easily change the transport layer in XMLRPC::Client class.
|
2
|
-
It adds a new class called XMLRPC::ClientS, subclass of the Client class. This
|
3
|
-
class must be subclassed to put your own transport code in it.
|
4
|
-
|
5
|
-
There are 3 private method that can be changed.
|
6
|
-
|
7
|
-
*new_socket* (info,async)
|
8
|
-
This method is called to create a new socket. Info is the parameter you passed
|
9
|
-
to the constructor and async is a boolean value that tells you if the socket
|
10
|
-
should be asyncrhonous.
|
11
|
-
The object returned must answer to read and write methods.
|
12
|
-
|
13
|
-
*read_response* (socket)
|
14
|
-
Must read the response from the socket and return the data. You may leave this
|
15
|
-
the default, but it will wait until the socket is closed.
|
16
|
-
|
17
|
-
*write_request* (socket,request)
|
18
|
-
Writes the request in the socket, this may be left as it is.
|
19
|
-
|
20
|
-
|
21
|
-
write_request and read_response have to be changed to use a specific protocol if you don't want the socket to be closed.
|
22
|
-
In the test i use a very simple one for instance which needs no explanation.
|
23
|
-
|
24
|
-
Author: Dario Meloni <mellon85@gmail.com>
|