55use Interop \Http \ServerMiddleware \DelegateInterface ;
66use Interop \Http \ServerMiddleware \MiddlewareInterface ;
77use PhpMiddleware \DoublePassCompatibilityTrait ;
8+ use Psr \Http \Message \ResponseInterface ;
89use Psr \Http \Message \ServerRequestInterface ;
910use Zend \Diactoros \Response ;
1011
@@ -16,15 +17,30 @@ class BlockRobotsMiddleware implements MiddlewareInterface
1617
1718 public function process (ServerRequestInterface $ request , DelegateInterface $ delegate )
1819 {
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 ();
2422 }
2523
2624 $ response = $ delegate ->process ($ request );
2725
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+ {
2844 return $ response ->withHeader (self ::ROBOTS_HEADER , 'noindex, nofollow ' );
2945 }
3046}
0 commit comments