Файл: DESURE-dcms-f12de01ac63e/sys/api.php
Строк: 47
<?php
include 'inc/start.php';
if ( empty( $_POST['requests'] ) || ! is_string( $_POST['requests'] ) ) {
header( 'Content-type: application/json', true, 500 );
exit;
}
$requests = json_decode( $_POST['requests'], true );
$responses = array();
foreach ( $requests AS $key => $request_param ) {
$response = $responses[ $key ] = new api_response();
try {
$request = new api_request( $request_param );
$module = $request->module;
$method = $request->method;
// проверяем, что необходимый модуль (класс) существует
if ( ! class_exists( $module ) ) {
throw new Exception( 'api_controller "' . $module . '" not found' );
}
// проверяем, что класс реализует интерфейс api_controller
if ( ! in_array( 'api_controller', class_implements( $module ) ) ) {
throw new Exception( 'Class "' . $module . '" does not implement interface "api_controller"' );
}
$reflection = new ReflectionClass( $module );
// проверяем, что у класса имеется необходимый метод
$reflection->getMethod( $method );
$response->data = call_user_func( array( $module, $method ), $request->data );
} catch ( ApiException $e ) {
$response->error = $e;
} catch ( Exception $e ) {
$response->error = $e->getMessage();
}
}
header( 'Content-type: application/json', true, 200 );
echo json_encode( $responses );