You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Emitron includes a robust request handler that executes PSR-15 middlewares in sequence, returning a fully PSR-7 compliant response.
33
33
34
34
```php
35
-
use MaplePHP\Emitron\RequestHandler;use MaplePHP\Http\Environment;use MaplePHP\Http\ServerRequest;use MaplePHP\Http\Uri;
35
+
use Psr\Http\Message\RequestInterface;
36
+
use Psr\Http\Message\ResponseInterface;
37
+
use MaplePHP\Emitron\RequestHandler;
38
+
use MaplePHP\Emitron\Emitters\HttpEmitter;
39
+
use MaplePHP\Http\Environment;
40
+
use MaplePHP\Http\ServerRequest;
41
+
use MaplePHP\Http\Uri;
42
+
use MaplePHP\Emitron\Middlewares\{
43
+
ContentLengthMiddleware,
44
+
GzipMiddleware,
45
+
HeadRequestMiddleware
46
+
};
47
+
use App\Controllers\MyController;
36
48
37
49
// Use MaplePHP HTTP library or any other PSR-7 implementation
38
50
$env = new Environment();
@@ -48,8 +60,23 @@ $middlewares = [
48
60
];
49
61
50
62
// Run the middleware stack
51
-
$handler = new RequestHandler($middlewares, $factory);
63
+
64
+
65
+
$factory = new ResponseFactory($bodyStream);
66
+
// $finalHandler = new ControllerRequestHandler($factory, [MyController::class, "index"]);
67
+
$finalHandler = new ControllerRequestHandler($factory, function(RequestInterface $request, ResponseInterface $response) {
68
+
$response->getBody()->write("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
69
+
return $response;
70
+
});
71
+
72
+
$handler = new RequestHandler($middlewares, $finalHandler);
52
73
$response = $handler->handle($request);
74
+
75
+
// Emit the execute headers and response correctly
76
+
//$emit = new CliEmitter($response, $request);
77
+
$emit = new HttpEmitter();
78
+
$emit->emit($response, $request);
79
+
53
80
```
54
81
55
82
Each middleware conforms to `Psr\Http\Server\MiddlewareInterface`, allowing you to plug in your own or third-party middlewares with no additional setup.
group($config->withSubject("Testing middleware and emitter"), function (TestCase$case) {
18
20
19
-
$stream = newStream(Stream::TEMP);
20
-
$stream->write("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras eleifend ligula vel diam tincidunt finibus. In dapibus dictum lectus a malesuada.");
21
+
22
+
21
23
22
24
// It will reverse the order
23
25
$middlewares = [
24
26
newContentLengthMiddleware(),
25
27
newGzipMiddleware(),
26
-
newOutputMiddleware($stream),
27
28
newHeadRequestMiddleware(),
28
29
];
29
30
30
31
$env = newEnvironment();
31
32
$uri = newUri($env->getUriParts());
32
33
$request = newServerRequest($uri, $env);
33
34
34
-
// Do not exist in CLI so need to mock it
35
+
// This is something that is usually set by the browser
36
+
// So this does not exist in CLI so need to mock it
$res->getBody()->write("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras eleifend ligula vel diam tincidunt finibus. In dapibus dictum lectus a malesuada.");
0 commit comments