5
5
use Interop \Http \ServerMiddleware \DelegateInterface ;
6
6
use Interop \Http \ServerMiddleware \MiddlewareInterface ;
7
7
use PhpMiddleware \DoublePassCompatibilityTrait ;
8
+ use Psr \Http \Message \ResponseInterface ;
8
9
use Psr \Http \Message \ServerRequestInterface ;
9
10
use Zend \Diactoros \Response ;
10
11
@@ -16,15 +17,30 @@ class BlockRobotsMiddleware implements MiddlewareInterface
16
17
17
18
public function process (ServerRequestInterface $ request , DelegateInterface $ delegate )
18
19
{
19
- if ($ request ->getUri ()->getPath () === '/robots.txt ' ) {
20
- $ response = new Response ('php://memory ' , 200 , ['Content-Type ' => 'text/plain ' ]);
21
- $ response ->getBody ()->write ("User-Agent: * \nDisallow: / " );
22
-
23
- return $ response ;
20
+ if ($ this ->isRobotsTxt ($ request )) {
21
+ return $ this ->createRobotsTxtResponse ();
24
22
}
25
23
26
24
$ response = $ delegate ->process ($ request );
27
25
26
+ return $ this ->attachRobotsHeaderTo ($ response );
27
+ }
28
+
29
+ private function createRobotsTxtResponse ()
30
+ {
31
+ $ response = new Response ('php://memory ' , 200 , ['Content-Type ' => 'text/plain ' ]);
32
+ $ response ->getBody ()->write ("User-Agent: * \nDisallow: / " );
33
+
34
+ return $ response ;
35
+ }
36
+
37
+ private function isRobotsTxt (ServerRequestInterface $ request )
38
+ {
39
+ return $ request ->getUri ()->getPath () === '/robots.txt ' ;
40
+ }
41
+
42
+ private function attachRobotsHeaderTo (ResponseInterface $ response )
43
+ {
28
44
return $ response ->withHeader (self ::ROBOTS_HEADER , 'noindex, nofollow ' );
29
45
}
30
46
}
0 commit comments