mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 12:40:01 +01:00
webservices MDL-12886 update xmlrpc server/client to work with new web service description
This commit is contained in:
parent
7d2a049292
commit
5000d34e8e
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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";
|
||||
|
Loading…
x
Reference in New Issue
Block a user