/** * Index page */ public function indexAction() { // get user info by api key if (null != ($apiKey = $this->getRequest()->getQuery()->api_key)) { if (null != ($userInfo = UserIdentityService::getUserInfo($apiKey, UserModelBase::USER_INFO_BY_API_KEY))) { // fill the user's info if ($userInfo['status'] == UserModelBase::STATUS_APPROVED) { $userIdentity = []; foreach ($userInfo as $fieldName => $value) { $userIdentity[$fieldName] = $value; } // init user identity UserIdentityService::setCurrentUserIdentity($userIdentity); } } } XmlRpcServerFault::attachFaultException('XmlRpc\\Exception\\XmlRpcActionDenied'); $server = new XmlRpcServer(); // get xmlrpc classes if (null != ($classes = $this->getModel()->getClasses())) { $server->sendArgumentsToAllMethods(false); foreach ($classes as $class) { $server->setClass($class['path'], $class['namespace'], $this->getServiceLocator()); } } $server->handle(); // disable layout and view script return $this->response; }
function plugin_xmlrpc_action() { global $use_pingback; //$headers = Header::getHeaders('application/xml'); header('Content-Type: application/xml'); $server = new XmlRpcServer(); XmlRpcServer\Fault::attachFaultException('Services\\Exception'); if (!DEBUG && !XmlRpcServer\Cache::get(XMLRPC_CACHE, $server)) { if ($use_pingback) { $server->setClass('PukiWiki\\Service\\PingBack', 'pingback'); } $server->setClass('PukiWiki\\Service\\WikiRpc', 'wiki'); XmlRpcServer\Cache::save(XMLRPC_CACHE, $server); } //Header::writeResponse($headers, 200, $server->handle()); echo $server->handle(); exit; }
/** * Raise an xmlrpc server fault * * @param string|\Exception $fault * @param int $code * @return Server\Fault */ public function fault($fault = null, $code = 404) { if (!$fault instanceof \Exception) { $fault = (string) $fault; if (empty($fault)) { $fault = 'Unknown Error'; } $fault = new Server\Exception\RuntimeException($fault, $code); } return Server\Fault::getInstance($fault); }
/** * __toString() test */ public function test__toString() { $dom = new \DOMDocument('1.0', 'UTF-8'); $r = $dom->appendChild($dom->createElement('methodResponse')); $f = $r->appendChild($dom->createElement('fault')); $v = $f->appendChild($dom->createElement('value')); $s = $v->appendChild($dom->createElement('struct')); $m1 = $s->appendChild($dom->createElement('member')); $m1->appendChild($dom->createElement('name', 'faultCode')); $cv = $m1->appendChild($dom->createElement('value')); $cv->appendChild($dom->createElement('int', 411)); $m2 = $s->appendChild($dom->createElement('member')); $m2->appendChild($dom->createElement('name', 'faultString')); $sv = $m2->appendChild($dom->createElement('value')); $sv->appendChild($dom->createElement('string', 'Testing fault')); $xml = $dom->saveXML(); $e = new Server\Exception\RuntimeException('Testing fault', 411); $fault = Server\Fault::getInstance($e); $this->assertEquals(trim($xml), trim($fault->__toString())); }