From 981a41e2cdb0848bea6c433577a7ae60d2920a00 Mon Sep 17 00:00:00 2001 From: Thomas Müller Date: Tue, 17 Sep 2013 00:26:55 +0200 Subject: adding interface for middleware --- lib/public/appframework/imiddleware.php | 88 +++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 lib/public/appframework/imiddleware.php (limited to 'lib/public/appframework/imiddleware.php') diff --git a/lib/public/appframework/imiddleware.php b/lib/public/appframework/imiddleware.php new file mode 100644 index 00000000000..9340034fcc9 --- /dev/null +++ b/lib/public/appframework/imiddleware.php @@ -0,0 +1,88 @@ +. + * + */ + + +namespace OCP\AppFramework; +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/ + */ +interface 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 + */ + function beforeController($controller, $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 cant handle it + * @return Response a Response object in case that the exception was handled + */ + function afterException($controller, $methodName, \Exception $exception); + + /** + * This is being run after a successful controller method 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 + */ + function afterController($controller, $methodName, Response $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 + */ + function beforeOutput($controller, $methodName, $output); +} -- cgit v1.2.3 From b9e943f5d52d1bf888233fdc2288477322591c43 Mon Sep 17 00:00:00 2001 From: Thomas Müller Date: Tue, 17 Sep 2013 09:42:14 +0200 Subject: fix naming --- lib/public/appframework/imiddleware.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/public/appframework/imiddleware.php') diff --git a/lib/public/appframework/imiddleware.php b/lib/public/appframework/imiddleware.php index 9340034fcc9..1e76d3bbe49 100644 --- a/lib/public/appframework/imiddleware.php +++ b/lib/public/appframework/imiddleware.php @@ -32,7 +32,7 @@ use OCP\AppFramework\Http\Response; * They're modeled after Django's middleware system: * https://docs.djangoproject.com/en/dev/topics/http/middleware/ */ -interface MiddleWare { +interface IMiddleWare { /** -- cgit v1.2.3