webservices MDL-12886 update xmlrpc server/client to work with new web service description

This commit is contained in:
jerome 2009-08-28 10:06:14 +00:00
parent 7d2a049292
commit 5000d34e8e
2 changed files with 68 additions and 12 deletions

View File

@ -36,7 +36,7 @@ final class xmlrpc_server extends webservice_server {
$this->set_protocolname("XML-RPC");
$this->set_protocolid("xmlrpc");
}
public function run() {
$enable = $this->get_enable();
if (empty($enable)) {
@ -53,14 +53,19 @@ final class xmlrpc_server extends webservice_server {
if (empty($token)) {
$server = new Zend_XmlRpc_Server();
$server->setClass("ws_authentication", "authentication");
echo $server->handle();
// Create a request object
$request = new Zend_XmlRpc_Request_Http();
$params = $request->getParams();
$this->convertXmlrpcParams($params);
$request->setParams($params);
echo $server->handle($request);
} else { // if token exist, do the authentication here
/// TODO: following function will need to be modified
/// 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
/// TODO: probably change this
global $USER;
$USER = $user;
}
@ -70,9 +75,38 @@ final class xmlrpc_server extends webservice_server {
require_once(dirname(__FILE__) . '/../../'.$classpath.'/external.php');
/// run the server
$server = new Zend_XmlRpc_Server();
$server = new Zend_XmlRpc_Server();
$server->setClass($classpath."_external", $classpath);
echo $server->handle();
$request = new Zend_XmlRpc_Request_Http();
$params = $request->getParams();
$this->convertXmlrpcParams($params);
$request->setParams($params);
echo $server->handle($request);
}
}
private function convertXmlrpcParams(&$params) {
if (is_array($params)) {
//get the first key
$key = key($params);
reset($params);
//if first key == 0 so do not change the params
if (strcmp($key, "0") == 0) {
foreach ($params as &$param) {
$this->convertXmlrpcParams($param);
}
}
//first key is a string, params need to be converted into an object
//first go into
else {
foreach ($params as $paramkey => &$param) {
$this->convertXmlrpcParams($param);
}
$params = (object) $params;
}
}
}

View File

@ -30,22 +30,44 @@ require_once('../../../config.php');
include "Zend/Loader.php";
Zend_Loader::registerAutoload();
//1. authentication
$client = new Zend_XmlRpc_Client($CFG->wwwroot."/webservice/xmlrpc/server.php");
$token = $client->call('authentication.get_token', array(array('username' => "wsuser", 'password' => "wspassword")));
$params = new stdClass();
$params->username = 'wsuser';
$params->password = 'wspassword';
$token = $client->call('authentication.get_token', $params);
var_dump($token);
//2. test functions
$client = new Zend_XmlRpc_Client($CFG->wwwroot."/webservice/xmlrpc/server.php?classpath=user&token=".$token);
var_dump($users = $client->call('user.get_users', array(array('search' => "admin"))));
$params = new stdClass();
$params->search = "admin";
var_dump($users = $client->call('user.get_users', $params));
print "<br/><br/>\n";
var_dump($users = $client->call('user.create_users', array(array(array('firstname' => "firstname6",'username' => "mockuser66",'lastname' => "lastname6",'email' => "mockuser6@mockuser6.com",'password' => "password6")))));
$user = new stdClass();
$user->password = "password6";
$user->email = "mockuser6@mockuser6.com";
$user->username = "mockuser66";
$user->firstname = "firstname6";
$user->lastname = "lastname6";
$params = new stdClass();
$params->users = array($user);
var_dump($users = $client->call('user.create_users', $params));
print "<br/><br/>\n";
var_dump($users = $client->call('user.update_users', array(array(array('username' => "mockuser66",'newusername' => "mockuser6b",'firstname' => "firstname6b")))));
$usertoupdate = new stdClass();
$usertoupdate->email = "mockuser6@mockuser6.com";
$usertoupdate->username = "mockuser66";
$usertoupdate->newusername = 'mockuser6b';
$usertoupdate->firstname = "firstname6b";
$params = new stdClass();
$params->users = array($usertoupdate);
var_dump($users = $client->call('user.update_users', $params));
print "<br/><br/>\n";
var_dump($users = $client->call('user.delete_users', array(array(array('username' => "mockuser6b")))));
$params = new stdClass();
$params->usernames = array("mockuser6b");
var_dump($users = $client->call('user.delete_users', $params));
//print "<br/><br/>\n";
//var_dump($users = $client->call('user.tmp_do_multiple_user_searches', array(array(array('search' => "jerome"),array('search' => "admin")))));
//print "<br/><br/>\n";