Class
Implements a servlet for use with WEBrick
, a pure Ruby (HTTP) server framework.
require "webrick" require "xmlrpc/server" s = XMLRPC::WEBrickServlet.new s.add_handler("michael.add") do |a,b| a + b end s.add_handler("michael.div") do |a,b| if b == 0 raise XMLRPC::FaultException.new(1, "division by zero") else a / b end end s.set_default_handler do |name, *args| raise XMLRPC::FaultException.new(-99, "Method #{name} missing" + " or wrong number of parameters!") end httpserver = WEBrick::HTTPServer.new(:Port => 8080) httpserver.mount("/RPC2", s) trap("HUP") { httpserver.shutdown } # use 1 instead of "HUP" on Windows httpserver.start
Class Methods
::
lib/xmlrpc/server.rb
View on GitHub
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/server.rb, line 629
def initialize(*a)
super
require "webrick/httpstatus"
@valid_ip = nil
end
No documentation available
Instance Methods
lib/xmlrpc/server.rb
View on GitHub
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/server.rb, line 640
def get_instance(config, *options)
# TODO: set config & options
self
end
No documentation available
lib/xmlrpc/server.rb
View on GitHub
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/server.rb, line 659
def get_valid_ip
@valid_ip
end
Return the valid IP addresses that are allowed to connect to the server.
See also, XMLRPC::Server#set_valid_ip
lib/xmlrpc/server.rb
View on GitHub
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/server.rb, line 636
def require_path_info?
false
end
Deprecated from WEBrick/1.2.2, but does not break anything.
lib/xmlrpc/server.rb
View on GitHub
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/server.rb, line 663
def service(request, response)
if @valid_ip
raise WEBrick::HTTPStatus::Forbidden unless @valid_ip.any? { |ip| request.peeraddr[3] =~ ip }
end
if request.request_method != "POST"
raise WEBrick::HTTPStatus::MethodNotAllowed,
"unsupported method `#{request.request_method}'."
end
if parse_content_type(request['Content-type']).first != "text/xml"
raise WEBrick::HTTPStatus::BadRequest
end
length = (request['Content-length'] || 0).to_i
raise WEBrick::HTTPStatus::LengthRequired unless length > 0
data = request.body
if data.nil? or data.bytesize != length
raise WEBrick::HTTPStatus::BadRequest
end
resp = process(data)
if resp.nil? or resp.bytesize <= 0
raise WEBrick::HTTPStatus::InternalServerError
end
response.status = 200
response['Content-Length'] = resp.bytesize
response['Content-Type'] = "text/xml; charset=utf-8"
response.body = resp
end
No documentation available
lib/xmlrpc/server.rb
View on GitHub
# File tmp/rubies/ruby-2.3.8/lib/xmlrpc/server.rb, line 648
def set_valid_ip(*ip_addr)
if ip_addr.size == 1 and ip_addr[0].nil?
@valid_ip = nil
else
@valid_ip = ip_addr
end
end
Specifies the valid IP addresses that are allowed to connect to the server.
Each IP is either a String or a Regexp
.