/** * This is the XML-RPC server routine * * @access public * @return void */ public function run() { Yii::import('application.helpers.remotecontrol.*'); $oHandler = new remotecontrol_handle($this->controller); $RPCType = Yii::app()->getConfig("RPCInterface"); if (Yii::app()->getRequest()->isPostRequest) { if ($RPCType == 'xml') { $cur_path = get_include_path(); set_include_path($cur_path . PATH_SEPARATOR . APPPATH . 'helpers'); // Yii::import was causing problems for some odd reason require_once 'Zend/XmlRpc/Server.php'; require_once 'Zend/XmlRpc/Server/Exception.php'; require_once 'Zend/XmlRpc/Value/Exception.php'; $this->xmlrpc = new Zend_XmlRpc_Server(); $this->xmlrpc->sendArgumentsToAllMethods(false); Yii::import('application.libraries.LSZend_XmlRpc_Response_Http'); $this->xmlrpc->setResponseClass('LSZend_XmlRpc_Response_Http'); $this->xmlrpc->setClass($oHandler); $result = $this->xmlrpc->handle(); if ($result instanceof LSZend_XmlRpc_Response_Http) { $result->printXml(); } else { // a Zend_XmlRpc_Server_Fault with exception message from XMLRPC echo $result; } } elseif ($RPCType == 'json') { Yii::app()->loadLibrary('LSjsonRPCServer'); if (!isset($_SERVER['CONTENT_TYPE'])) { $serverContentType = explode(';', $_SERVER['HTTP_CONTENT_TYPE']); $_SERVER['CONTENT_TYPE'] = reset($serverContentType); } LSjsonRPCServer::handle($oHandler); } foreach (App()->log->routes as $route) { $route->enabled = $route->enabled && !$route instanceof CWebLogRoute; } exit; } else { // Disabled output of API methods for now if (Yii::app()->getConfig("rpc_publish_api") == true && in_array($RPCType, array('xml', 'json'))) { $reflector = new ReflectionObject($oHandler); foreach ($reflector->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { /* @var $method ReflectionMethod */ if (substr($method->getName(), 0, 1) !== '_') { $list[$method->getName()] = array('description' => str_replace(array("\r", "\r\n", "\n"), "<br/>", $method->getDocComment()), 'parameters' => $method->getParameters()); } } ksort($list); $aData['method'] = $RPCType; $aData['list'] = $list; $aData['display']['menu_bars'] = false; // Hide normal menu bar $this->_renderWrappedTemplate('remotecontrol', array('index_view'), $aData); } } }
public function indexAction() { $this->_helper->viewRenderer->setNoRender(); $server = new Zend_XmlRpc_Server(); $server->setClass('Application_Model_Data', 'cf'); echo $server->handle(); }
/** * Run webservice * * @param Mage_Api_Controller_Action $controller * @return Mage_Api_Model_Server_Adapter_Xmlrpc */ public function run() { $this->_xmlRpc = new Zend_XmlRpc_Server(); $this->_xmlRpc->setClass($this->getHandler()); $this->getController()->getResponse()->setHeader('Content-Type', 'text/xml')->setBody($this->_xmlRpc->handle()); return $this; }
/** * Test request/response encoding (alternate encoding) */ public function testRequestResponseEncoding2() { $this->_server->setEncoding('ISO-8859-1'); $response = $this->_server->handle(); $request = $this->_server->getRequest(); $this->assertEquals('ISO-8859-1', $request->getEncoding()); $this->assertEquals('ISO-8859-1', $response->getEncoding()); }
/** * Run webservice * * @return Mage_Api_Model_Server_Adapter_Xmlrpc */ public function run() { $apiConfigCharset = Mage::getStoreConfig("api/config/charset"); $this->_xmlRpc = new Zend_XmlRpc_Server(); $this->_xmlRpc->setEncoding($apiConfigCharset)->setClass($this->getHandler()); $this->getController()->getResponse()->clearHeaders()->setHeader('Content-Type', 'text/xml; charset=' . $apiConfigCharset)->setBody($this->_xmlRpc->handle()); return $this; }
public function xmlrpcServerAction() { Zend_XmlRpc_Server_Fault::attachFaultException('Exception'); $server = new Zend_XmlRpc_Server(); $server->setClass('MyProject_BL_Member', 'member'); header('Content-Type: text/xml'); echo $server->handle(); exit(0); }
public function testHandleFunction() { $this->_server->addFunction('Zend_XmlRpc_Server_testFunction'); $request = new Zend_XmlRpc_Request(); $request->setMethod('Zend_XmlRpc_Server_testFunction'); $request->setParams(array(array('value1'), 'key')); $response = $this->_server->handle($request); $this->assertEquals('key: value1', $response->getReturnValue()); }
/** * @group ZF-2872 */ public function testCanMarshalBase64Requests() { $this->_server->setClass('Zend_XmlRpc_Server_testClass', 'test'); $data = base64_encode('this is the payload'); $param = array('type' => 'base64', 'value' => $data); $request = new Zend_XmlRpc_Request('test.base64', array($param)); $response = $this->_server->handle($request); $this->assertFalse($response instanceof Zend_XmlRpc_Fault); $this->assertEquals($data, $response->getReturnValue()); }
/** * This is the XML-RPC server routine * * @access public * @return void */ public function run() { $RPCType = Yii::app()->getConfig("RPCInterface"); if ($RPCType == 'xml') { $cur_path = get_include_path(); set_include_path($cur_path . PATH_SEPARATOR . APPPATH . 'helpers'); // Yii::import was causing problems for some odd reason require_once 'Zend/XmlRpc/Server.php'; require_once 'Zend/XmlRpc/Server/Exception.php'; require_once 'Zend/XmlRpc/Value/Exception.php'; $this->xmlrpc = new Zend_XmlRpc_Server(); $this->xmlrpc->sendArgumentsToAllMethods(false); $this->xmlrpc->setClass('remotecontrol_handle', '', $this->controller); echo $this->xmlrpc->handle(); } elseif ($RPCType == 'json') { Yii::app()->loadLibrary('jsonRPCServer'); $oHandler = new remotecontrol_handle($this->controller); jsonRPCServer::handle($oHandler); } exit; }
/** * This is the XML-RPC server routine * * @access public * @return void */ public function run() { $oHandler = new remotecontrol_handle($this->controller); $RPCType = Yii::app()->getConfig("RPCInterface"); if (Yii::app()->getRequest()->isPostRequest) { if ($RPCType == 'xml') { $cur_path = get_include_path(); set_include_path($cur_path . PATH_SEPARATOR . APPPATH . 'helpers'); // Yii::import was causing problems for some odd reason require_once 'Zend/XmlRpc/Server.php'; require_once 'Zend/XmlRpc/Server/Exception.php'; require_once 'Zend/XmlRpc/Value/Exception.php'; $this->xmlrpc = new Zend_XmlRpc_Server(); $this->xmlrpc->sendArgumentsToAllMethods(false); $this->xmlrpc->setClass($oHandler); echo $this->xmlrpc->handle(); } elseif ($RPCType == 'json') { Yii::app()->loadLibrary('jsonRPCServer'); jsonRPCServer::handle($oHandler); } exit; } else { // Disabled output of API methods for now if (1 == 2 && in_array($RPCType, array('xml', 'json'))) { $reflector = new ReflectionObject($oHandler); foreach ($reflector->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { /* @var $method ReflectionMethod */ if (substr($method->getName(), 0, 1) !== '_') { $list[$method->getName()] = array('description' => str_replace(array("\r", "\r\n", "\n"), "<br/>", $method->getDocComment()), 'parameters' => $method->getParameters()); } } ksort($list); $aData['method'] = $RPCType; $aData['list'] = $list; $aData['display']['menu_bars'] = false; // Hide normal menu bar $this->_renderWrappedTemplate('remotecontrol', array('index_view'), $aData); } } }
/** * multicall() test * * Call as method call * * Expects: * - methods: * * Returns: array */ public function testMulticall() { $struct = array(array('methodName' => 'system.listMethods', 'params' => array()), array('methodName' => 'system.methodHelp', 'params' => array('system.multicall'))); $request = new Zend_XmlRpc_Request(); $request->setMethod('system.multicall'); $request->addParam($struct); $response = $this->_server->handle($request); $this->assertTrue($response instanceof Zend_XmlRpc_Response, $response->__toString()); $returns = $response->getReturnValue(); $this->assertTrue(is_array($returns)); $this->assertEquals(2, count($returns)); $this->assertTrue(is_array($returns[0]), var_export($returns[0], 1)); $this->assertTrue(is_string($returns[1]), var_export($returns[1], 1)); }
/** * Ping should be called when new content is created */ public function pingAction() { //Do not render anything, otherwise there will be an xml parse error $this->getHelper('viewRenderer')->setNoRender(); $this->_helper->layout->disableLayout(); try { //set up a new factory Zend xmlrpc server and add classes $server = new Zend_XmlRpc_Server(); $server->setClass('Ifphp_Ping_XmlRpc', 'pingback'); //success echo $server->handle(); } catch (Exception $e) { throw $e; } }
/** * Multicall - boxcar feature of XML-RPC for calling multiple methods * in a single request. * * Expects a an array of structs representing method calls, each element * having the keys: * - methodName * - params * * Returns an array of responses, one for each method called, with the value * returned by the method. If an error occurs for a given method, returns a * struct with a fault response. * * @see http://www.xmlrpc.com/discuss/msgReader$1208 * @param array $methods * @return array */ public function multicall($methods) { $responses = array(); foreach ($methods as $method) { $fault = false; if (!is_array($method)) { $fault = $this->_server->fault('system.multicall expects each method to be a struct', 601); } elseif (!isset($method['methodName'])) { $fault = $this->_server->fault('Missing methodName: ' . var_export($methods, 1), 602); } elseif (!isset($method['params'])) { $fault = $this->_server->fault('Missing params', 603); } elseif (!is_array($method['params'])) { $fault = $this->_server->fault('Params must be an array', 604); } else { if ('system.multicall' == $method['methodName']) { // don't allow recursive calls to multicall $fault = $this->_server->fault('Recursive system.multicall forbidden', 605); } } if (!$fault) { try { $request = new Zend_XmlRpc_Request(); $request->setMethod($method['methodName']); $request->setParams($method['params']); $response = $this->_server->handle($request); if ($response instanceof Zend_XmlRpc_Fault || $response->isFault() ) { $fault = $response; } else { $responses[] = $response->getReturnValue(); } } catch (Exception $e) { $fault = $this->_server->fault($e); } } if ($fault) { $responses[] = array( 'faultCode' => $fault->getCode(), 'faultString' => $fault->getMessage() ); } } return $responses; }
public function xmlrpcServerAction() { // disable layout and view $this->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); // set output format header('Content-Type: text/xml'); // handle server request Zend_XmlRpc_Server_Fault::attachFaultException('Exception'); $server = new Zend_XmlRpc_Server(); $server->setClass('MyProject_Service_XmlRpc_Example', 'example'); $response = $server->handle(); // display response echo $response; exit(0); }
public function run() { $enable = $this->get_enable(); if (empty($enable)) { die; } include "Zend/Loader.php"; Zend_Loader::registerAutoload(); Zend_XmlRpc_Server_Fault::attachFaultException('moodle_exception'); // retrieve the token from the url // if the token doesn't exist, set a class containing only get_token() $token = optional_param('token', null, PARAM_ALPHANUM); if (empty($token)) { $server = new Zend_XmlRpc_Server(); $server->setClass("ws_authentication", "authentication"); echo $server->handle(); } else { // if token exist, do the authentication here /// TODO: following function will need to be modified $user = webservice_lib::mock_check_token($token); if (empty($user)) { throw new moodle_exception('wrongidentification'); } else { /// TODO: probably change this global $USER; $USER = $user; } //retrieve the api name $classpath = optional_param(classpath, null, PARAM_ALPHA); require_once dirname(__FILE__) . '/../../' . $classpath . '/external.php'; /// run the server $server = new Zend_XmlRpc_Server(); $server->setClass($classpath . "_external", $classpath); echo $server->handle(); } }
/** * receive a ping */ public function pingAction() { $owApp = OntoWiki::getInstance(); $logger = $owApp->logger; $logger->debug('Pingback Server Init.'); $this->_helper->viewRenderer->setNoRender(); $this->_helper->layout->disableLayout(); $this->_owApp->appendMessage(new OntoWiki_Message('Ping received.', OntoWiki_Message::INFO)); $post = $this->_request->getPost(); if (isset($post['source']) && isset($post['target'])) { // Simplified Semantic Pingback // read config and put it into options $options = array(); $config = $this->_privateConfig; if (isset($config->rdfa->enabled)) { $options['rdfa'] = $config->rdfa->enabled; } if (isset($config->titleProperties)) { $options['title_properties'] = $config->titleProperties->toArray(); } if (isset($config->genericRelation)) { $options['generic_relation'] = $config->genericRelation; } $ping = new Erfurt_Ping($options); echo $ping->receive($post['source'], $post['target']); return; } else { // Create XML RPC Server $server = new Zend_XmlRpc_Server(); $server->setClass($this, 'pingback'); // Let the server handle the RPC calls. $response = $this->getResponse(); $response->setBody($server->handle()); return; } }
<?php require 'startzend.php'; require 'Hp12c.php'; $server = new Zend_XmlRpc_Server(); $server->setClass('Hp12c', 'calculadora'); echo $server->handle();
/** * Ping back for the site */ public function pingBackAction() { $feeds = new Feeds(); $feed = $feeds->getByToken($this->getRequest()->getParam('token')); $this->updateFeedPosts($feed); $this->getHelper('viewRenderer')->setNoRender(); $this->_helper->layout->disableLayout(); try { //set up a new factory Zend xmlrpc server and add classes $server = new Zend_XmlRpc_Server(); $server->setClass('Ifphp_Ping_XmlRpc', 'pingback'); //success echo $server->handle(); } catch (Exception $e) { throw $e; } }
/** Init the XML/RPC server */ function initRPCServer() { require_once '../../../../Mage.php'; //Magento import Mage::app(); //bootstarp the Magento Model layer (at least) and autoload function require_once '../../../../../lib/Zend/XmlRpc/Server.php'; $server = new Zend_XmlRpc_Server(); $server->setClass('OpenERPConnector'); echo $server->handle(); }