File Manager

Current Directory: /home/astoriaah/www/templates/yootheme/vendor/yootheme/framework/src/Http
Viewing File: /home/astoriaah/www/templates/yootheme/vendor/yootheme/framework/src/Http/Response.php
<?php namespace YOOtheme\Http; use YOOtheme\Http\Message\Stream; class Response extends Message\Response { use Message; /** * @var array */ protected $cookies = []; /** * @var array */ protected $attributes = []; /** * Writes data to the body. * * @param string $data * @return self */ public function write($data) { $body = $this->getBody(); $body->write($data); return $this; } /** * Writes a file to body. * * @param string $file * @throws \InvalidArgumentException * @return self */ public function withFile($file) { if (!is_file($file)) { throw new \InvalidArgumentException('Invalid file'); } $body = new Stream($file); if (is_callable('finfo_file')) { $type = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $file); } elseif (is_callable('mime_content_type')) { $type = mime_content_type($file); } return $this->withBody($body)->withHeader('Content-Type', $type)->withHeader('Content-Length', $body->getSize()); } /** * Writes JSON to the body. * * @param mixed $data * @param int $status * @param int $options * @throws \InvalidArgumentException * @return self */ public function withJson($data, $status = null, $options = 0) { $response = $this->withBody(new Stream)->write($json = @json_encode($data, $options)); if ($json === false) { $message = is_callable('json_last_error_msg') ? json_last_error_msg() : ''; throw new \InvalidArgumentException($message ?: 'Invalid JSON', json_last_error()); } if (isset($status)) { $response = $response->withStatus($status); } return $response->withHeader('Content-Type', 'application/json; charset=utf-8'); } /** * Redirect response. * * @param string $url * @param int $status * @return self */ public function withRedirect($url, $status = 302) { return $this->withStatus($status)->withHeader('Location', (string) $url); } /** * Sets a response cookie. * * @param string $name * @param string $value * @param array $options * @return self */ public function withCookie($name, $value = '', array $options = []) { $defaults = [ 'expire' => 0, 'path' => '/', 'domain' => '', 'secure' => false, 'httponly' => false, ]; $cookie = array_replace($defaults, $options); $cookie['value'] = strval($value); $cookie['expire'] = is_string($cookie['expire']) ? strtotime($cookie['expire']) : intval($cookie['expire']); $clone = clone $this; $clone->cookies[$name] = $cookie; return $clone; } /** * Sends the response. * * @return self */ public function send() { if (!headers_sent()) { header(sprintf('HTTP/%s %s %s', $this->getProtocolVersion(), $this->getStatusCode(), $this->getReasonPhrase() )); foreach ($this->getHeaders() as $name => $values) { header(sprintf('%s: %s', $name, implode(',', $values))); } foreach ($this->cookies as $name => $cookie) { setcookie($name, $cookie['value'], $cookie['expire'], $cookie['path'], $cookie['domain'], $cookie['secure'], $cookie['httponly']); } } echo $this->getBody(); if ('cli' !== PHP_SAPI) { flush(); } return $this; } /** * Is this response informational? * * @return bool */ public function isInformational() { return $this->getStatusCode() >= 100 && $this->getStatusCode() < 200; } /** * Is this response OK? * * @return bool */ public function isOk() { return $this->getStatusCode() == 200; } /** * Is this response empty? * * @return bool */ public function isEmpty() { return in_array($this->getStatusCode(), [204, 205, 304]); } /** * Is this response successful? * * @return bool */ public function isSuccessful() { return $this->getStatusCode() >= 200 && $this->getStatusCode() < 300; } /** * Is this response a redirect? * * @return bool */ public function isRedirect() { return in_array($this->getStatusCode(), [301, 302, 303, 307]); } /** * Is this response a redirection? * * @return bool */ public function isRedirection() { return $this->getStatusCode() >= 300 && $this->getStatusCode() < 400; } /** * Is this response forbidden? * * @return bool */ public function isForbidden() { return $this->getStatusCode() == 403; } /** * Is this response not Found? * * @return bool */ public function isNotFound() { return $this->getStatusCode() == 404; } /** * Is this response a client error? * * @return bool */ public function isClientError() { return $this->getStatusCode() >= 400 && $this->getStatusCode() < 500; } /** * Is this response a server error? * * @return bool */ public function isServerError() { return $this->getStatusCode() >= 500 && $this->getStatusCode() < 600; } /** * Returns the body as a string. * * @return string */ public function __toString() { return (string) $this->getBody(); } }