IXR_Server::serve()publicWP 1.0

Method of the class: IXR_Server{}

No Hooks.

Return

null. Nothing (null).

Usage

$IXR_Server = new IXR_Server();
$IXR_Server->serve( $data );
$data **
-
Default: false

IXR_Server::serve() code WP 6.5.2

function serve($data = false)
{
    if (!$data) {
        if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] !== 'POST') {
            if ( function_exists( 'status_header' ) ) {
                status_header( 405 ); // WP #20986
                header( 'Allow: POST' );
            }
            header('Content-Type: text/plain'); // merged from WP #9093
            die('XML-RPC server accepts POST requests only.');
        }

        $data = file_get_contents('php://input');
    }
    $this->message = new IXR_Message($data);
    if (!$this->message->parse()) {
        $this->error(-32700, 'parse error. not well formed');
    }
    if ($this->message->messageType != 'methodCall') {
        $this->error(-32600, 'server error. invalid xml-rpc. not conforming to spec. Request must be a methodCall');
    }
    $result = $this->call($this->message->methodName, $this->message->params);

    // Is the result an error?
    if (is_a($result, 'IXR_Error')) {
        $this->error($result);
    }

    // Encode the result
    $r = new IXR_Value($result);
    $resultxml = $r->getXml();

    // Create the XML
    $xml = <<<EOD
<methodResponse>
  <params>
<param>
  <value>
  $resultxml
  </value>
</param>
  </params>
</methodResponse>

EOD;
  // Send it
  $this->output($xml);
}