0
0
mirror of https://github.com/nextcloud/server.git synced 2024-11-14 12:26:49 +00:00
nextcloud_server/lib/public/AppFramework/Middleware.php
Andy Scherzinger dae7c159f7
chore: Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-05-24 13:11:22 +02:00

86 lines
3.1 KiB
PHP

<?php
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
*/
namespace OCP\AppFramework;
use Exception;
use OCP\AppFramework\Http\Response;
/**
* Middleware is used to provide hooks before or after controller methods and
* deal with possible exceptions raised in the controller methods.
* They're modeled after Django's middleware system:
* https://docs.djangoproject.com/en/dev/topics/http/middleware/
* @since 6.0.0
*/
abstract class Middleware {
/**
* This is being run in normal order before the controller is being
* called which allows several modifications and checks
*
* @param Controller $controller the controller that is being called
* @param string $methodName the name of the method that will be called on
* the controller
* @return void
* @since 6.0.0
*/
public function beforeController(Controller $controller, string $methodName) {
}
/**
* This is being run when either the beforeController method or the
* controller method itself is throwing an exception. The middleware is
* asked in reverse order to handle the exception and to return a response.
* If the response is null, it is assumed that the exception could not be
* handled and the error will be thrown again
*
* @param Controller $controller the controller that is being called
* @param string $methodName the name of the method that will be called on
* the controller
* @param Exception $exception the thrown exception
* @throws Exception the passed in exception if it can't handle it
* @return Response a Response object in case that the exception was handled
* @since 6.0.0
*/
public function afterException(Controller $controller, string $methodName, Exception $exception) {
throw $exception;
}
/**
* This is being run after a successful controllermethod call and allows
* the manipulation of a Response object. The middleware is run in reverse order
*
* @param Controller $controller the controller that is being called
* @param string $methodName the name of the method that will be called on
* the controller
* @param Response $response the generated response from the controller
* @return Response a Response object
* @since 6.0.0
*/
public function afterController(Controller $controller, string $methodName, Response $response) {
return $response;
}
/**
* This is being run after the response object has been rendered and
* allows the manipulation of the output. The middleware is run in reverse order
*
* @param Controller $controller the controller that is being called
* @param string $methodName the name of the method that will be called on
* the controller
* @param string $output the generated output from a response
* @return string the output that should be printed
* @since 6.0.0
*/
public function beforeOutput(Controller $controller, string $methodName, string $output) {
return $output;
}
}