<?php
namespace Lia\Http;
/**
* Event Handler signatures for handling all steps in `lia->deliver()` (does NOT include ready() & finish() though)
*
* It is not necessary to implement this interface, but if you're implementing all the methods, it's a good idea.
*/
interface ResponseInterface {
/**
* Before routes are retrieved, for setup or to modify $request & $response.
*
* @return void
*/
public function onStartRequest(\Lia\Http\Request $request, \Lia\Http\Response $response);
/**
* Get one or multiple routes
*
* @return array <int index, \Lia\Http\Route $route> an array of routes (or array of one route) matching the request
*/
public function onGetHttpRoutes(\Lia\Http\Request $request, \Lia\Http\Response $response): array;
/**
* Modify $response, to show error, set redirect headers, or something else.
*
* @return void
*/
public function onNoHttpRoutes(\Lia\Http\Request $request, \Lia\Http\Response $response);
/**
* Modify $response to show content from one route, multiple routes, to show an error, to redirect, or something else.
*
* @param $routes array<int index, \Lia\Http\Route $route> an array of Routes
* @return void
*/
public function onMultipleHttpRoutes(\Lia\Http\Request $request, \Lia\Http\Response $response, array $routes);
/**
* Modify $response to display $route.
*
* @param $route \Lia\Http\Route
* @return void
*/
public function onSingleHttpRoute(\Lia\Http\Request $request, \Lia\Http\Response $response, \Lia\Http\Route $route);
/**
* Modify $response->body depending on $response->theme_name
*
* @param $request \Lia\Http\Request
* @param $response \Lia\Http\Response
* @param $routes array<int index, \Lia\Http\Route $route> an array of Routes. May be empty.
* @return void
*/
public function onApplyTheme(\Lia\Http\Request $request, \Lia\Http\Response $response, array $routes);
/**
* Response has been sent.
* Log the request/response/routes, cleanup caches, or do something else.
*
* @param $request \Lia\Http\Request
* @param $response \Lia\Http\Response
* @param $routes array<int index, \Lia\Http\Route $route> an array of Routes. May be empty.
* @return void
*/
public function onEndRequest(\Lia\Http\Request $request, \Lia\Http\Response $response, array $routes);
}