/** * 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; }
/** * Zend_XmlRpc_Server_Fault::detachFaultException() test */ public function testDetachFaultException() { Server\Fault::attachFaultException('ZendTest\\XmlRpc\\Server\\Exception'); $e = new Exception('test exception', 411); $fault = Server\Fault::getInstance($e); $this->assertEquals('test exception', $fault->getMessage()); $this->assertEquals(411, $fault->getCode()); Server\Fault::detachFaultException('ZendTest\\XmlRpc\\Server\\Exception'); $fault = Server\Fault::getInstance($e); $this->assertEquals('Unknown error', $fault->getMessage()); $this->assertEquals(404, $fault->getCode()); $exceptions = array('ZendTest\\XmlRpc\\Server\\Exception', 'ZendTest\\XmlRpc\\Server\\Exception2', 'ZendTest\\XmlRpc\\Server\\Exception3'); Server\Fault::attachFaultException($exceptions); foreach ($exceptions as $class) { $e = new $class('test exception', 411); $fault = Server\Fault::getInstance($e); $this->assertEquals('test exception', $fault->getMessage()); $this->assertEquals(411, $fault->getCode()); } Server\Fault::detachFaultException($exceptions); foreach ($exceptions as $class) { $e = new $class('test exception', 411); $fault = Server\Fault::getInstance($e); $this->assertEquals('Unknown error', $fault->getMessage()); $this->assertEquals(404, $fault->getCode()); } }
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; }