# XMLRPC::ModRubyServer (Class)

In: | xmlrpc/server.rb
Parent: | BasicServer

## Methods

new serve

## Public Class methods

new(*a)

[Source]

    # File xmlrpc/server.rb, line 514
      def initialize(*a)
        @ap = Apache::request
        super(*a)
      end

## Public Instance methods

serve()

[Source]

    # File xmlrpc/server.rb, line 519
      def serve
        catch(:exit_serve) {
          header = {}
          @ap.headers_in.each {|key, value| header[key.capitalize] = value}

          length = header['Content-length'].to_i

          http_error(405, "Method Not Allowed") unless @ap.request_method  == "POST"
          http_error(400, "Bad Request")        unless parse_content_type(header['Content-type']).first == "text/xml"
          http_error(411, "Length Required")    unless length > 0

          # TODO: do we need a call to binmode?

          @ap.binmode
          data = @ap.read(length)

          http_error(400, "Bad Request")        if data.nil? or data.size != length

          http_write(process(data), 200, "Content-type" => "text/xml")
        }
      end

[Validate]