Файловый менеджер - Редактировать - /home/harasnat/www/mf/rest.tar
Назад
lib.php 0000604 00000005744 15062123140 0006023 0 ustar 00 <?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * Moodle REST library * * @package webservice_rest * @copyright 2009 Jerome Mouneyrac * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ /** * Moodle REST client * * It has been implemented for unit testing purpose (all protocols have similar client) * * @package webservice_rest * @copyright 2010 Jerome Mouneyrac * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class webservice_rest_client { /** @var moodle_url the REST server url */ private $serverurl; /** @var string token */ private $token; /** @var string returned value format: xml or json */ private $format; /** * Constructor * * @param string $serverurl a Moodle URL * @param string $token the token used to do the web service call * @param string $format returned value format: xml or json */ public function __construct($serverurl, $token, $format = 'xml') { $this->serverurl = new moodle_url($serverurl); $this->token = $token; $this->format = $format; } /** * Set the token used to do the REST call * * @param string $token the token used to do the web service call */ public function set_token($token) { $this->token = $token; } /** * Execute client WS request with token authentication * * @param string $functionname the function name * @param array $params the parameters of the function * @return mixed */ public function call($functionname, $params) { global $DB, $CFG; if ($this->format == 'json') { $formatparam = '&moodlewsrestformat=json'; $this->serverurl->param('moodlewsrestformat','json'); } else { $formatparam = ''; //to keep retro compability with old server that only support xml (they don't expect this param) } $this->serverurl->param('wstoken',$this->token); $this->serverurl->param('wsfunction',$functionname); //you could also use params(). $result = download_file_content($this->serverurl->out(false), null, $params); //TODO MDL-22965 transform the XML result into PHP values if ($this->format == 'json') { $result = json_decode($result); } return $result; } } tests/server_test.php 0000604 00000021271 15062123140 0010755 0 ustar 00 <?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. namespace webservice_rest; use core_external\external_multiple_structure; use core_external\external_single_structure; use core_external\external_value; defined('MOODLE_INTERNAL') || die(); global $CFG; require_once($CFG->dirroot . '/webservice/rest/locallib.php'); /** * Rest server testcase. * * @package webservice_rest * @copyright 2016 Frédéric Massart - FMCorz.net * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class server_test extends \advanced_testcase { /** * Data provider for test_xmlize. * @return array */ public function xmlize_provider() { $data = []; $data[] = [null, null, '']; $data[] = [new external_value(PARAM_BOOL), false, "<VALUE>0</VALUE>\n"]; $data[] = [new external_value(PARAM_BOOL), true, "<VALUE>1</VALUE>\n"]; $data[] = [new external_value(PARAM_ALPHA), null, "<VALUE null=\"null\"/>\n"]; $data[] = [new external_value(PARAM_ALPHA), 'a', "<VALUE>a</VALUE>\n"]; $data[] = [new external_value(PARAM_INT), 123, "<VALUE>123</VALUE>\n"]; $data[] = [ new external_multiple_structure(new external_value(PARAM_INT)), [1, 2, 3], "<MULTIPLE>\n" . "<VALUE>1</VALUE>\n" . "<VALUE>2</VALUE>\n" . "<VALUE>3</VALUE>\n" . "</MULTIPLE>\n" ]; $data[] = [ // Multiple structure with null value. new external_multiple_structure(new external_value(PARAM_ALPHA)), ['A', null, 'C'], "<MULTIPLE>\n" . "<VALUE>A</VALUE>\n" . "<VALUE null=\"null\"/>\n" . "<VALUE>C</VALUE>\n" . "</MULTIPLE>\n" ]; $data[] = [ // Multiple structure without values. new external_multiple_structure(new external_value(PARAM_ALPHA)), [], "<MULTIPLE>\n" . "</MULTIPLE>\n" ]; $data[] = [ new external_single_structure([ 'one' => new external_value(PARAM_INT), 'two' => new external_value(PARAM_INT), 'three' => new external_value(PARAM_INT), ]), ['one' => 1, 'two' => 2, 'three' => 3], "<SINGLE>\n" . "<KEY name=\"one\"><VALUE>1</VALUE>\n</KEY>\n" . "<KEY name=\"two\"><VALUE>2</VALUE>\n</KEY>\n" . "<KEY name=\"three\"><VALUE>3</VALUE>\n</KEY>\n" . "</SINGLE>\n" ]; $data[] = [ // Single structure with null value. new external_single_structure([ 'one' => new external_value(PARAM_INT), 'two' => new external_value(PARAM_INT), 'three' => new external_value(PARAM_INT), ]), ['one' => 1, 'two' => null, 'three' => 3], "<SINGLE>\n" . "<KEY name=\"one\"><VALUE>1</VALUE>\n</KEY>\n" . "<KEY name=\"two\"><VALUE null=\"null\"/>\n</KEY>\n" . "<KEY name=\"three\"><VALUE>3</VALUE>\n</KEY>\n" . "</SINGLE>\n" ]; $data[] = [ // Single structure missing keys. new external_single_structure([ 'one' => new external_value(PARAM_INT), 'two' => new external_value(PARAM_INT), 'three' => new external_value(PARAM_INT), ]), ['two' => null, 'three' => 3], "<SINGLE>\n" . "<KEY name=\"one\"><VALUE null=\"null\"/>\n</KEY>\n" . "<KEY name=\"two\"><VALUE null=\"null\"/>\n</KEY>\n" . "<KEY name=\"three\"><VALUE>3</VALUE>\n</KEY>\n" . "</SINGLE>\n" ]; $data[] = [ // Nested structure. new external_single_structure([ 'one' => new external_multiple_structure( new external_value(PARAM_INT) ), 'two' => new external_multiple_structure( new external_single_structure([ 'firstname' => new external_value(PARAM_RAW), 'lastname' => new external_value(PARAM_RAW), ]) ), 'three' => new external_single_structure([ 'firstname' => new external_value(PARAM_RAW), 'lastname' => new external_value(PARAM_RAW), ]), ]), [ 'one' => [2, 3, 4], 'two' => [ ['firstname' => 'Louis', 'lastname' => 'Armstrong'], ['firstname' => 'Neil', 'lastname' => 'Armstrong'], ], 'three' => ['firstname' => 'Neil', 'lastname' => 'Armstrong'], ], "<SINGLE>\n" . "<KEY name=\"one\"><MULTIPLE>\n". "<VALUE>2</VALUE>\n" . "<VALUE>3</VALUE>\n" . "<VALUE>4</VALUE>\n" . "</MULTIPLE>\n</KEY>\n" . "<KEY name=\"two\"><MULTIPLE>\n". "<SINGLE>\n" . "<KEY name=\"firstname\"><VALUE>Louis</VALUE>\n</KEY>\n" . "<KEY name=\"lastname\"><VALUE>Armstrong</VALUE>\n</KEY>\n" . "</SINGLE>\n" . "<SINGLE>\n" . "<KEY name=\"firstname\"><VALUE>Neil</VALUE>\n</KEY>\n" . "<KEY name=\"lastname\"><VALUE>Armstrong</VALUE>\n</KEY>\n" . "</SINGLE>\n" . "</MULTIPLE>\n</KEY>\n" . "<KEY name=\"three\"><SINGLE>\n" . "<KEY name=\"firstname\"><VALUE>Neil</VALUE>\n</KEY>\n" . "<KEY name=\"lastname\"><VALUE>Armstrong</VALUE>\n</KEY>\n" . "</SINGLE>\n</KEY>\n" . "</SINGLE>\n" ]; $data[] = [ // Nested structure with missing keys. new external_single_structure([ 'one' => new external_multiple_structure( new external_value(PARAM_INT) ), 'two' => new external_multiple_structure( new external_single_structure([ 'firstname' => new external_value(PARAM_RAW), 'lastname' => new external_value(PARAM_RAW), ]) ), 'three' => new external_single_structure([ 'firstname' => new external_value(PARAM_RAW), 'lastname' => new external_value(PARAM_RAW), ]), ]), [ 'two' => [ ['firstname' => 'Louis'], ['lastname' => 'Armstrong'], ], 'three' => ['lastname' => 'Armstrong'], ], "<SINGLE>\n" . "<KEY name=\"one\"><MULTIPLE>\n</MULTIPLE>\n</KEY>\n" . "<KEY name=\"two\"><MULTIPLE>\n". "<SINGLE>\n" . "<KEY name=\"firstname\"><VALUE>Louis</VALUE>\n</KEY>\n" . "<KEY name=\"lastname\"><VALUE null=\"null\"/>\n</KEY>\n" . "</SINGLE>\n" . "<SINGLE>\n" . "<KEY name=\"firstname\"><VALUE null=\"null\"/>\n</KEY>\n" . "<KEY name=\"lastname\"><VALUE>Armstrong</VALUE>\n</KEY>\n" . "</SINGLE>\n" . "</MULTIPLE>\n</KEY>\n" . "<KEY name=\"three\"><SINGLE>\n" . "<KEY name=\"firstname\"><VALUE null=\"null\"/>\n</KEY>\n" . "<KEY name=\"lastname\"><VALUE>Armstrong</VALUE>\n</KEY>\n" . "</SINGLE>\n</KEY>\n" . "</SINGLE>\n" ]; return $data; } /** * @dataProvider xmlize_provider * @param \core_external\external_description $description The data structure. * @param mixed $value The value to xmlise. * @param mixed $expected The expected output. */ public function test_xmlize($description, $value, $expected) { $method = new \ReflectionMethod('webservice_rest_server', 'xmlize_result'); $method->setAccessible(true); $this->assertEquals($expected, $method->invoke(null, $value, $description)); } } classes/privacy/provider.php 0000604 00000002765 15062123140 0012221 0 ustar 00 <?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * Privacy provider implementation for webservice_rest. * * @package webservice_rest * @copyright 2018 Mihail Geshoski <mihail@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace webservice_rest\privacy; defined('MOODLE_INTERNAL') || die(); /** * Privacy provider implementation for webservice_rest. * * @copyright 2018 Mihail Geshoski <mihail@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class provider implements \core_privacy\local\metadata\null_provider { /** * Get the language string identifier with the component's language * file to explain why this plugin stores no data. * * @return string */ public static function get_reason() : string { return 'privacy:metadata'; } } version.php 0000604 00000002201 15062123140 0006723 0 ustar 00 <?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * Version details * * @package webservice_rest * @copyright 2009 Jerome Mouneyrac * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); $plugin->version = 2023100900; // The current plugin version (Date: YYYYMMDDXX). $plugin->requires = 2023100400; // Requires this Moodle version. $plugin->component = 'webservice_rest'; // Full name of the plugin (used for diagnostics) db/access.php 0000604 00000002261 15062123140 0007072 0 ustar 00 <?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * REST server related capabilities * * @package webservice_rest * @category access * @copyright 2009 Petr Skodak * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ $capabilities = array( 'webservice/rest:use' => array( 'captype' => 'read', // in fact this may be considered read and write at the same time 'contextlevel' => CONTEXT_COURSE, // the context level should be probably CONTEXT_MODULE 'archetypes' => array( ), ), ); simpleserver.php 0000604 00000002455 15062123140 0007771 0 ustar 00 <?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * REST web service entry point. The authentication is done via username/password. * * @package webservice_rest * @copyright 2009 Jerome Mouneyrac * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ /** * NO_DEBUG_DISPLAY - disable moodle specific debug messages and any errors in output */ define('NO_DEBUG_DISPLAY', true); define('WS_SERVER', true); require('../../config.php'); require_once("$CFG->dirroot/webservice/rest/locallib.php"); if (!webservice_protocol_is_enabled('rest')) { die; } $server = new webservice_rest_server(WEBSERVICE_AUTHMETHOD_USERNAME); $server->run(); die; locallib.php 0000604 00000025356 15062123140 0007037 0 ustar 00 <?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * REST web service implementation classes and methods. * * @package webservice_rest * @copyright 2009 Jerome Mouneyrac * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ use core_external\external_multiple_structure; use core_external\external_single_structure; use core_external\external_value; require_once("$CFG->dirroot/webservice/lib.php"); /** * REST service server implementation. * * @package webservice_rest * @copyright 2009 Petr Skoda (skodak) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class webservice_rest_server extends webservice_base_server { /** @var string return method ('xml' or 'json') */ protected $restformat; /** * Contructor * * @param string $authmethod authentication method of the web service (WEBSERVICE_AUTHMETHOD_PERMANENT_TOKEN, ...) * @param string $restformat Format of the return values: 'xml' or 'json' */ public function __construct($authmethod) { parent::__construct($authmethod); $this->wsname = 'rest'; } /** * Set the request format to. */ public function set_rest_format(): void { // Get GET and POST parameters. $methodvariables = array_merge($_GET, $_POST); // Retrieve REST format parameter - 'xml' (default) or 'json'. $restformatisset = isset($methodvariables['moodlewsrestformat']) && (($methodvariables['moodlewsrestformat'] == 'xml' || $methodvariables['moodlewsrestformat'] == 'json')); $this->restformat = $restformatisset ? $methodvariables['moodlewsrestformat'] : 'xml'; } /** * This method parses the $_POST and $_GET superglobals and looks for * the following information: * 1/ user authentication - username+password or token (wsusername, wspassword and wstoken parameters) * 2/ function name (wsfunction parameter) * 3/ function parameters (all other parameters except those above) * 4/ text format parameters * 5/ return rest format xml/json */ protected function parse_request() { // Retrieve and clean the POST/GET parameters from the parameters specific to the server. parent::set_web_service_call_settings(); // Get GET and POST parameters. $methodvariables = array_merge($_GET, $_POST); $this->set_rest_format(); unset($methodvariables['moodlewsrestformat']); if ($this->authmethod == WEBSERVICE_AUTHMETHOD_USERNAME) { $this->username = isset($methodvariables['wsusername']) ? $methodvariables['wsusername'] : null; unset($methodvariables['wsusername']); $this->password = isset($methodvariables['wspassword']) ? $methodvariables['wspassword'] : null; unset($methodvariables['wspassword']); $this->functionname = isset($methodvariables['wsfunction']) ? $methodvariables['wsfunction'] : null; unset($methodvariables['wsfunction']); $this->parameters = $methodvariables; } else { $this->token = isset($methodvariables['wstoken']) ? $methodvariables['wstoken'] : null; unset($methodvariables['wstoken']); $this->functionname = isset($methodvariables['wsfunction']) ? $methodvariables['wsfunction'] : null; unset($methodvariables['wsfunction']); $this->parameters = $methodvariables; } } /** * Send the result of function call to the WS client * formatted as XML document. */ protected function send_response() { //Check that the returned values are valid try { if ($this->function->returns_desc != null) { $validatedvalues = \core_external\external_api::clean_returnvalue( $this->function->returns_desc, $this->returns ); } else { $validatedvalues = null; } } catch (Exception $ex) { $exception = $ex; } if (!empty($exception)) { $response = $this->generate_error($exception); } else { //We can now convert the response to the requested REST format if ($this->restformat == 'json') { $response = json_encode($validatedvalues); } else { $response = '<?xml version="1.0" encoding="UTF-8" ?>'."\n"; $response .= '<RESPONSE>'."\n"; $response .= self::xmlize_result($validatedvalues, $this->function->returns_desc); $response .= '</RESPONSE>'."\n"; } } $this->send_headers(); echo $response; } /** * Send the error information to the WS client * formatted as XML document. * Note: the exception is never passed as null, * it only matches the abstract function declaration. * @param exception $ex the exception that we are sending */ protected function send_error($ex=null) { // Unless debugging is completely off, log the error to server error log. if (debugging('', DEBUG_MINIMAL)) { $info = get_exception_info($ex); // This format is the same as default_exception_handler() in setuplib.php but with the // word 'REST' instead of 'Default', to make it easy to reuse any existing processing. error_log('REST exception handler: ' . $info->message . ' Debug: ' . $info->debuginfo . "\n" . format_backtrace($info->backtrace, true)); } $this->send_headers(); echo $this->generate_error($ex); } /** * Build the error information matching the REST returned value format (JSON or XML) * @param exception $ex the exception we are converting in the server rest format * @return string the error in the requested REST format */ protected function generate_error($ex) { if ($this->restformat == 'json') { $errorobject = new stdClass; $errorobject->exception = get_class($ex); if (isset($ex->errorcode)) { $errorobject->errorcode = $ex->errorcode; } $errorobject->message = $ex->getMessage(); if (debugging() and isset($ex->debuginfo)) { $errorobject->debuginfo = $ex->debuginfo; } $error = json_encode($errorobject); } else { $error = '<?xml version="1.0" encoding="UTF-8" ?>'."\n"; $error .= '<EXCEPTION class="'.get_class($ex).'">'."\n"; if (isset($ex->errorcode)) { $error .= '<ERRORCODE>' . htmlspecialchars($ex->errorcode, ENT_COMPAT, 'UTF-8') . '</ERRORCODE>' . "\n"; } $error .= '<MESSAGE>'.htmlspecialchars($ex->getMessage(), ENT_COMPAT, 'UTF-8').'</MESSAGE>'."\n"; if (debugging() and isset($ex->debuginfo)) { $error .= '<DEBUGINFO>'.htmlspecialchars($ex->debuginfo, ENT_COMPAT, 'UTF-8').'</DEBUGINFO>'."\n"; } $error .= '</EXCEPTION>'."\n"; } return $error; } /** * Internal implementation - sending of page headers. */ protected function send_headers() { if ($this->restformat == 'json') { header('Content-type: application/json'); } else { header('Content-Type: application/xml; charset=utf-8'); header('Content-Disposition: inline; filename="response.xml"'); } header('Cache-Control: private, must-revalidate, pre-check=0, post-check=0, max-age=0'); header('Expires: '. gmdate('D, d M Y H:i:s', 0) .' GMT'); header('Pragma: no-cache'); header('Accept-Ranges: none'); // Allow cross-origin requests only for Web Services. // This allow to receive requests done by Web Workers or webapps in different domains. header('Access-Control-Allow-Origin: *'); } /** * Internal implementation - recursive function producing XML markup. * * @param mixed $returns the returned values * @param external_description $desc * @return string */ protected static function xmlize_result($returns, $desc) { if ($desc === null) { return ''; } else if ($desc instanceof external_value) { if (is_bool($returns)) { // we want 1/0 instead of true/false here $returns = (int)$returns; } if (is_null($returns)) { return '<VALUE null="null"/>'."\n"; } else { return '<VALUE>'.htmlspecialchars($returns, ENT_COMPAT, 'UTF-8').'</VALUE>'."\n"; } } else if ($desc instanceof external_multiple_structure) { $mult = '<MULTIPLE>'."\n"; if (!empty($returns)) { foreach ($returns as $val) { $mult .= self::xmlize_result($val, $desc->content); } } $mult .= '</MULTIPLE>'."\n"; return $mult; } else if ($desc instanceof external_single_structure) { $single = '<SINGLE>'."\n"; foreach ($desc->keys as $key=>$subdesc) { $value = isset($returns[$key]) ? $returns[$key] : null; $single .= '<KEY name="'.$key.'">'.self::xmlize_result($value, $subdesc).'</KEY>'."\n"; } $single .= '</SINGLE>'."\n"; return $single; } } } /** * REST test client class * * @package webservice_rest * @copyright 2009 Petr Skoda (skodak) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class webservice_rest_test_client implements webservice_test_client_interface { /** * Execute test client WS request * @param string $serverurl server url (including token parameter or username/password parameters) * @param string $function function name * @param array $params parameters of the called function * @return mixed */ public function simpletest($serverurl, $function, $params) { return download_file_content($serverurl.'&wsfunction='.$function, null, $params); } } server.php 0000604 00000003513 15062123140 0006553 0 ustar 00 <?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * REST web service entry point. The authentication is done via tokens. * * @package webservice_rest * @copyright 2009 Jerome Mouneyrac * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ /** * NO_DEBUG_DISPLAY - disable moodle specific debug messages and any errors in output */ define('NO_DEBUG_DISPLAY', true); define('WS_SERVER', true); require('../../config.php'); require_once("$CFG->dirroot/webservice/rest/locallib.php"); if (!webservice_protocol_is_enabled('rest')) { header("HTTP/1.0 403 Forbidden"); debugging('The server died because the web services or the REST protocol are not enable', DEBUG_DEVELOPER); die; } $server = new webservice_rest_server(WEBSERVICE_AUTHMETHOD_PERMANENT_TOKEN); $server->run(); die; /** * Raises Early WS Exception in REST format. * * @param Exception $ex Raised exception. */ function raise_early_ws_exception(Exception $ex): void { global $CFG; require_once("$CFG->dirroot/webservice/rest/locallib.php"); $server = new webservice_rest_server(WEBSERVICE_AUTHMETHOD_PERMANENT_TOKEN); $server->set_rest_format(); $server->exception_handler($ex); } lang/en/webservice_rest.php 0000604 00000002141 15062123140 0011757 0 ustar 00 <?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * Strings for component 'webservice_rest', language 'en', branch 'MOODLE_20_STABLE' * * @package webservice_rest * @category string * @copyright 2009 Petr Skodak * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ $string['pluginname'] = 'REST protocol'; $string['privacy:metadata'] = 'The REST protocol plugin does not store any personal data.'; $string['rest:use'] = 'Use REST protocol';
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка