diff options
Diffstat (limited to 'src/Controller/CheckRequest.php')
-rw-r--r-- | src/Controller/CheckRequest.php | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/Controller/CheckRequest.php b/src/Controller/CheckRequest.php new file mode 100644 index 0000000..a63a2b7 --- /dev/null +++ b/src/Controller/CheckRequest.php @@ -0,0 +1,86 @@ +<?php + +namespace Jasny\Controller; + +use Psr\Http\Message\ServerRequestInterface; + +/** + * Controller methods to check the request + */ +trait CheckRequest +{ + /** + * Get request, set for controller + * + * @return ServerRequestInterface + */ + abstract protected function getRequest(); + + + /** + * Check if request is GET request + * + * @return boolean + */ + public function isGetRequest() + { + $method = $this->getRequest()->getMethod(); + + return !$method || $method === 'GET'; + } + + /** + * Check if request is POST request + * + * @return boolean + */ + public function isPostRequest() + { + return $this->getRequest()->getMethod() === 'POST'; + } + + /** + * Check if request is PUT request + * + * @return boolean + */ + public function isPutRequest() + { + return $this->getRequest()->getMethod() === 'PUT'; + } + + /** + * Check if request is DELETE request + * + * @return boolean + */ + public function isDeleteRequest() + { + return $this->getRequest()->getMethod() === 'DELETE'; + } + + /** + * Check if request is HEAD request + * + * @return boolean + */ + public function isHeadRequest() + { + return $this->getRequest()->getMethod() === 'HEAD'; + } + + + /** + * Returns the HTTP referer if it is on the current host + * + * @return string + */ + public function getLocalReferer() + { + $request = $this->getRequest(); + $referer = $request->getHeaderLine('HTTP_REFERER'); + $host = $request->getHeaderLine('HTTP_HOST'); + + return $referer && parse_url($referer, PHP_URL_HOST) === $host ? $referer : ''; + } +}
\ No newline at end of file |