diff options
| -rw-r--r-- | engine/lib/web_services.php | 48 | ||||
| -rw-r--r-- | services/api/rest_api.php | 58 | 
2 files changed, 44 insertions, 62 deletions
diff --git a/engine/lib/web_services.php b/engine/lib/web_services.php index b9c87843e..e529711e1 100644 --- a/engine/lib/web_services.php +++ b/engine/lib/web_services.php @@ -1342,8 +1342,6 @@ function unregister_service_handler($handler) {  	}  } -// REST handler -  /**   * REST API handler   * @@ -1352,10 +1350,52 @@ function unregister_service_handler($handler) {  function rest_handler() {  	global $CONFIG; -	require $CONFIG->path . "services/api/rest_api.php"; +	// Register the error handler +	error_reporting(E_ALL); +	set_error_handler('_php_api_error_handler'); + +	// Register a default exception handler +	set_exception_handler('_php_api_exception_handler'); + +	// Check to see if the api is available +	if ((isset($CONFIG->disable_api)) && ($CONFIG->disable_api == true)) { +		throw new SecurityException(elgg_echo('SecurityException:APIAccessDenied')); +	} + +	// plugins should return true to control what API and user authentication handlers are registered +	if (elgg_trigger_plugin_hook('rest', 'init', null, false) == false) { +		// for testing from a web browser, you can use the session PAM +		// do not use for production sites!! +		//register_pam_handler('pam_auth_session'); + +		// user token can also be used for user authentication +		register_pam_handler('pam_auth_usertoken'); + +		// simple API key check +		register_pam_handler('api_auth_key', "sufficient", "api"); +		// hmac +		register_pam_handler('api_auth_hmac', "sufficient", "api"); +	} + +	// Get parameter variables +	$method = get_input('method'); +	$result = null; + +	// this will throw an exception if authentication fails +	authenticate_method($method); + +	$result = execute_method($method); + + +	if (!($result instanceof GenericResult)) { +		throw new APIException(elgg_echo('APIException:ApiResultUnknown')); +	} + +	// Output the result +	echo elgg_view_page($method, elgg_view("api/output", array("result" => $result)));  } -// Initialisation +// Initialization  /**   * Unit tests for API diff --git a/services/api/rest_api.php b/services/api/rest_api.php deleted file mode 100644 index 4cee374d6..000000000 --- a/services/api/rest_api.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php -/** - * Rest endpoint. - * The API REST endpoint. - * - * @package Elgg - * @subpackage API - */ - -/** - *  Start the Elgg engine - */ -require_once("../../engine/start.php"); -global $CONFIG; - -// Register the error handler -error_reporting(E_ALL); -set_error_handler('_php_api_error_handler'); - -// Register a default exception handler -set_exception_handler('_php_api_exception_handler'); - -// Check to see if the api is available -if ((isset($CONFIG->disable_api)) && ($CONFIG->disable_api == true)) { -	throw new SecurityException(elgg_echo('SecurityException:APIAccessDenied')); -} - -// plugins should return true to control what API and user authentication handlers are registered -if (elgg_trigger_plugin_hook('rest', 'init', null, false) == false) { -	// for testing from a web browser, you can use the session PAM -	// do not use for production sites!! -	//register_pam_handler('pam_auth_session'); - -	// user token can also be used for user authentication -	register_pam_handler('pam_auth_usertoken'); - -	// simple API key check -	register_pam_handler('api_auth_key', "sufficient", "api"); -	// hmac -	register_pam_handler('api_auth_hmac', "sufficient", "api"); -} - -// Get parameter variables -$method = get_input('method'); -$result = null; - -// this will throw an exception if authentication fails -authenticate_method($method); - -$result = execute_method($method); - - -if (!($result instanceof GenericResult)) { -	throw new APIException(elgg_echo('APIException:ApiResultUnknown')); -} - -// Output the result -echo elgg_view_page($method, elgg_view("api/output", array("result" => $result)));
\ No newline at end of file  | 
