xmlrpc 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,172 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann@ntecs.de)
4
+ #
5
+ # $Id$
6
+ #
7
+ module XMLRPC # :nodoc:
8
+
9
+
10
+ # This module enables a user-class to be marshalled
11
+ # by XML-RPC for Ruby into a Hash, with one additional
12
+ # key/value pair <code>___class___ => ClassName</code>
13
+ #
14
+ module Marshallable
15
+ end
16
+
17
+
18
+ # Defines ParserWriterChooseMixin, which makes it possible to choose a
19
+ # different XMLWriter and/or XMLParser then the default one.
20
+ #
21
+ # The Mixin is used in client.rb (class XMLRPC::Client)
22
+ # and server.rb (class XMLRPC::BasicServer)
23
+ module ParserWriterChooseMixin
24
+
25
+ # Sets the XMLWriter to use for generating XML output.
26
+ #
27
+ # Should be an instance of a class from module XMLRPC::XMLWriter.
28
+ #
29
+ # If this method is not called, then XMLRPC::Config::DEFAULT_WRITER is used.
30
+ def set_writer(writer)
31
+ @create = Create.new(writer)
32
+ self
33
+ end
34
+
35
+ # Sets the XMLParser to use for parsing XML documents.
36
+ #
37
+ # Should be an instance of a class from module XMLRPC::XMLParser.
38
+ #
39
+ # If this method is not called, then XMLRPC::Config::DEFAULT_PARSER is used.
40
+ def set_parser(parser)
41
+ @parser = parser
42
+ self
43
+ end
44
+
45
+ private
46
+
47
+ def create
48
+ # if set_writer was not already called then call it now
49
+ if @create.nil? then
50
+ set_writer(Config::DEFAULT_WRITER.new)
51
+ end
52
+ @create
53
+ end
54
+
55
+ def parser
56
+ # if set_parser was not already called then call it now
57
+ if @parser.nil? then
58
+ set_parser(Config::DEFAULT_PARSER.new)
59
+ end
60
+ @parser
61
+ end
62
+
63
+ end # module ParserWriterChooseMixin
64
+
65
+
66
+ module Service
67
+
68
+ # Base class for XMLRPC::Service::Interface definitions, used
69
+ # by XMLRPC::BasicServer#add_handler
70
+ class BasicInterface
71
+ attr_reader :prefix, :methods
72
+
73
+ def initialize(prefix)
74
+ @prefix = prefix
75
+ @methods = []
76
+ end
77
+
78
+ def add_method(sig, help=nil, meth_name=nil)
79
+ mname = nil
80
+ sig = [sig] if sig.kind_of? String
81
+
82
+ sig = sig.collect do |s|
83
+ name, si = parse_sig(s)
84
+ raise "Wrong signatures!" if mname != nil and name != mname
85
+ mname = name
86
+ si
87
+ end
88
+
89
+ @methods << [mname, meth_name || mname, sig, help]
90
+ end
91
+
92
+ private
93
+
94
+ def parse_sig(sig)
95
+ # sig is a String
96
+ if sig =~ /^\s*(\w+)\s+([^(]+)(\(([^)]*)\))?\s*$/
97
+ params = [$1]
98
+ name = $2.strip
99
+ $4.split(",").each {|i| params << i.strip} if $4 != nil
100
+ return name, params
101
+ else
102
+ raise "Syntax error in signature"
103
+ end
104
+ end
105
+
106
+ end # class BasicInterface
107
+
108
+ #
109
+ # Class which wraps a XMLRPC::Service::Interface definition, used
110
+ # by XMLRPC::BasicServer#add_handler
111
+ #
112
+ class Interface < BasicInterface
113
+ def initialize(prefix, &p)
114
+ raise "No interface specified" if p.nil?
115
+ super(prefix)
116
+ instance_eval(&p)
117
+ end
118
+
119
+ def get_methods(obj, delim=".")
120
+ prefix = @prefix + delim
121
+ @methods.collect { |name, meth, sig, help|
122
+ [prefix + name.to_s, obj.method(meth).to_proc, sig, help]
123
+ }
124
+ end
125
+
126
+ private
127
+
128
+ def meth(*a)
129
+ add_method(*a)
130
+ end
131
+
132
+ end # class Interface
133
+
134
+ class PublicInstanceMethodsInterface < BasicInterface
135
+ def initialize(prefix)
136
+ super(prefix)
137
+ end
138
+
139
+ def get_methods(obj, delim=".")
140
+ prefix = @prefix + delim
141
+ obj.class.public_instance_methods(false).collect { |name|
142
+ [prefix + name.to_s, obj.method(name).to_proc, nil, nil]
143
+ }
144
+ end
145
+ end
146
+
147
+
148
+ end # module Service
149
+
150
+
151
+ #
152
+ # Short-form to create a XMLRPC::Service::Interface
153
+ #
154
+ def self.interface(prefix, &p)
155
+ Service::Interface.new(prefix, &p)
156
+ end
157
+
158
+ # Short-cut for creating a XMLRPC::Service::PublicInstanceMethodsInterface
159
+ def self.iPIMethods(prefix)
160
+ Service::PublicInstanceMethodsInterface.new(prefix)
161
+ end
162
+
163
+
164
+ module ParseContentType
165
+ def parse_content_type(str)
166
+ a, *b = str.split(";")
167
+ return a.strip.downcase, *b
168
+ end
169
+ end
170
+
171
+ end # module XMLRPC
172
+
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'xmlrpc'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "xmlrpc"
8
+ spec.version = XMLRPC::VERSION
9
+ spec.authors = ["SHIBATA Hiroshi"]
10
+ spec.email = ["hsbt@ruby-lang.org"]
11
+
12
+ spec.summary = %q{XMLRPC is a lightweight protocol that enables remote procedure calls over HTTP.}
13
+ spec.description = %q{XMLRPC is a lightweight protocol that enables remote procedure calls over HTTP.}
14
+ spec.homepage = "https://github.com/ruby/xmlrpc"
15
+ spec.license = "Ruby"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+ spec.required_ruby_version = ">= 2.4.0"
22
+
23
+ spec.add_development_dependency "bundler"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "test-unit"
26
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xmlrpc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - SHIBATA Hiroshi
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-05-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: XMLRPC is a lightweight protocol that enables remote procedure calls
56
+ over HTTP.
57
+ email:
58
+ - hsbt@ruby-lang.org
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - ".gitignore"
64
+ - ".travis.yml"
65
+ - Gemfile
66
+ - LICENSE.txt
67
+ - README.md
68
+ - Rakefile
69
+ - bin/console
70
+ - bin/setup
71
+ - lib/xmlrpc.rb
72
+ - lib/xmlrpc/base64.rb
73
+ - lib/xmlrpc/client.rb
74
+ - lib/xmlrpc/config.rb
75
+ - lib/xmlrpc/create.rb
76
+ - lib/xmlrpc/datetime.rb
77
+ - lib/xmlrpc/marshal.rb
78
+ - lib/xmlrpc/parser.rb
79
+ - lib/xmlrpc/server.rb
80
+ - lib/xmlrpc/utils.rb
81
+ - xmlrpc.gemspec
82
+ homepage: https://github.com/ruby/xmlrpc
83
+ licenses:
84
+ - Ruby
85
+ metadata: {}
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 2.4.0
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubyforge_project:
102
+ rubygems_version: 2.6.4
103
+ signing_key:
104
+ specification_version: 4
105
+ summary: XMLRPC is a lightweight protocol that enables remote procedure calls over
106
+ HTTP.
107
+ test_files: []