Class | XMLRPC::WEBrickServlet |
In: |
xmlrpc/server.rb
|
Parent: | BasicServer |
# File xmlrpc/server.rb, line 708 def initialize(*a) super require "webrick/httpstatus" @valid_ip = nil end
# File xmlrpc/server.rb, line 720 def get_instance(config, *options) # TODO: set config & options self end
deprecated from WEBrick/1.2.2. but does not break anything.
# File xmlrpc/server.rb, line 716 def require_path_info? false end
# File xmlrpc/server.rb, line 737 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.size != length raise WEBrick::HTTPStatus::BadRequest end resp = process(data) if resp.nil? or resp.size <= 0 raise WEBrick::HTTPStatus::InternalServerError end response.status = 200 response['Content-Length'] = resp.size response['Content-Type'] = "text/xml; charset=utf-8" response.body = resp end