KONTOLODON
/
var
/
www
/
ojs-3.3.0-13
/
lib
/
pkp
/
lib
/
vendor
/
slim
/
slim
/
Slim
/
Handlers
/
Nama File / Folder
Size
Action
Strategies
--
NONE
NotAllowed.php
3.791KB
Hapus
Edit
Rename
NotFound.php
3.603KB
Hapus
Edit
Rename
<?php /** * Slim Framework (https://slimframework.com) * * @license https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License) */ namespace Slim\Handlers; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Slim\Http\Body; use UnexpectedValueException; class NotAllowed extends AbstractHandler { /** * @param ServerRequestInterface $request The most recent Request object * @param ResponseInterface $response The most recent Response object * @param string[] $methods Allowed HTTP methods * * @return ResponseInterface * * @throws UnexpectedValueException */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, array $methods) { if ($request->getMethod() === 'OPTIONS') { $status = 200; $contentType = 'text/plain'; $output = $this->renderPlainOptionsMessage($methods); } else { $status = 405; $contentType = $this->determineContentType($request); switch ($contentType) { case 'application/json': $output = $this->renderJsonNotAllowedMessage($methods); break; case 'text/xml': case 'application/xml': $output = $this->renderXmlNotAllowedMessage($methods); break; case 'text/html': $output = $this->renderHtmlNotAllowedMessage($methods); break; default: throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType); } } $body = new Body(fopen('php://temp', 'r+')); $body->write($output); $allow = implode(', ', $methods); return $response ->withStatus($status) ->withHeader('Content-type', $contentType) ->withHeader('Allow', $allow) ->withBody($body); } /** * Render plain message for OPTIONS response * * @param string[] $methods * * @return string */ protected function renderPlainOptionsMessage($methods) { $allow = implode(', ', $methods); return 'Allowed methods: ' . $allow; } /** * Render JSON not allowed message * * @param string[] $methods * * @return string */ protected function renderJsonNotAllowedMessage($methods) { $allow = implode(', ', $methods); return '{"message":"Method not allowed. Must be one of: ' . $allow . '"}'; } /** * Render XML not allowed message * * @param string[] $methods * * @return string */ protected function renderXmlNotAllowedMessage($methods) { $allow = implode(', ', $methods); return "<root><message>Method not allowed. Must be one of: $allow</message></root>"; } /** * Render HTML not allowed message * * @param string[] $methods * * @return string */ protected function renderHtmlNotAllowedMessage($methods) { $allow = implode(', ', $methods); $output = <<<END <html> <head> <title>Method not allowed</title> <style> body{ margin:0; padding:30px; font:12px/1.5 Helvetica,Arial,Verdana,sans-serif; } h1{ margin:0; font-size:48px; font-weight:normal; line-height:48px; } </style> </head> <body> <h1>Method not allowed</h1> <p>Method not allowed. Must be one of: <strong>$allow</strong></p> </body> </html> END; return $output; } }