Current File : /home/pacjaorg/public_html/2024/wp-content/plugins/bunyad-amp/src/RemoteRequest/CachedResponse.php |
<?php
/**
* Class CachedResponse.
*
* @package AmpProject\AmpWP
*/
namespace AmpProject\AmpWP\RemoteRequest;
use DateTimeImmutable;
use DateTimeInterface;
/**
* Serializable object that represents a cached response together with its expiry time.
*
* @package AmpProject\AmpWP
* @since 2.0
* @internal
*/
final class CachedResponse {
/**
* Cached body.
*
* @var string
*/
private $body;
/**
* Cached headers.
*
* @var array
*/
private $headers;
/**
* Cached status code.
*
* @var int
*/
private $status_code;
/**
* Expiry time of the cached value.
*
* @var DateTimeInterface
*/
private $expiry;
/**
* Instantiate a CachedResponse object.
*
* @param string $body Cached body.
* @param string[] $headers Associative array of cached headers.
* @param int $status_code Cached status code.
* @param DateTimeInterface $expiry Expiry of the cached value.
*/
public function __construct( $body, $headers, $status_code, DateTimeInterface $expiry ) {
$this->body = (string) $body;
$this->headers = (array) $headers;
$this->status_code = (int) $status_code;
$this->expiry = $expiry;
}
/**
* Get the cached body.
*
* @return string Cached body.
*/
public function get_body() {
return $this->body;
}
/**
* Get the cached headers.
*
* @return string[] Cached headers.
*/
public function get_headers() {
return $this->headers;
}
/**
* Get the cached status code.
*
* @return int Cached status code.
*/
public function get_status_code() {
return $this->status_code;
}
/**
* Determine the validity of the cached response.
*
* @return bool Whether the cached response is valid.
*/
public function is_valid() {
// Values are already typed, so we just control the status code for validity.
return $this->status_code > 100 && $this->status_code <= 599;
}
/**
* Get the expiry of the cached value.
*
* @return DateTimeInterface Expiry of the cached value.
*/
public function get_expiry() {
return $this->expiry;
}
/**
* Check whether the cached value is expired.
*
* @return bool Whether the cached value is expired.
*/
public function is_expired() {
return new DateTimeImmutable( 'now' ) > $this->expiry;
}
}