Add protocol and protocolVersion members and their accessors.
This commit is contained in:
parent
b3f997136f
commit
c970eee4bb
|
|
@ -24,6 +24,18 @@ abstract class Message {
|
||||||
*/
|
*/
|
||||||
protected $headers;
|
protected $headers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the protocol to use.
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $protocol = 'HTTP';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Version of the protocol to use.
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $protocolVersion = '1.1';
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
// !Accessors
|
// !Accessors
|
||||||
|
|
||||||
|
|
@ -39,6 +51,10 @@ abstract class Message {
|
||||||
return $this->getBody();
|
return $this->getBody();
|
||||||
case 'headers':
|
case 'headers':
|
||||||
return $this->getHeaders();
|
return $this->getHeaders();
|
||||||
|
case 'protocol':
|
||||||
|
return $this->getProtocol();
|
||||||
|
case 'protocolVersion':
|
||||||
|
return $this->getProtocolVersion();
|
||||||
default:
|
default:
|
||||||
throw new \Exception('Property ' . $name . ' does not exist.');
|
throw new \Exception('Property ' . $name . ' does not exist.');
|
||||||
}
|
}
|
||||||
|
|
@ -47,7 +63,7 @@ abstract class Message {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param mixed $value
|
* @param $value
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function __set($name, $value) {
|
public function __set($name, $value) {
|
||||||
|
|
@ -56,6 +72,12 @@ abstract class Message {
|
||||||
case 'body':
|
case 'body':
|
||||||
$this->setBody($value);
|
$this->setBody($value);
|
||||||
return;
|
return;
|
||||||
|
case 'protocol':
|
||||||
|
$this->setProtocol($value);
|
||||||
|
return;
|
||||||
|
case 'protocolVersion':
|
||||||
|
$this->setProtocolVersion($value);
|
||||||
|
return;
|
||||||
default:
|
default:
|
||||||
throw new \Exception('Property ' . $name . 'does not exist or is read-only.');
|
throw new \Exception('Property ' . $name . 'does not exist or is read-only.');
|
||||||
}
|
}
|
||||||
|
|
@ -109,6 +131,7 @@ abstract class Message {
|
||||||
* Add or update a header to a given value
|
* Add or update a header to a given value
|
||||||
*
|
*
|
||||||
* @param string $header
|
* @param string $header
|
||||||
|
* @param $value
|
||||||
* @param string $value
|
* @param string $value
|
||||||
*/
|
*/
|
||||||
public function setHeader($header, $value) {
|
public function setHeader($header, $value) {
|
||||||
|
|
@ -118,7 +141,7 @@ abstract class Message {
|
||||||
/**
|
/**
|
||||||
* Return if the response contains a header with the given key.
|
* Return if the response contains a header with the given key.
|
||||||
*
|
*
|
||||||
* @param string $header
|
* @param $header
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function hasHeader($header) {
|
public function hasHeader($header) {
|
||||||
|
|
@ -136,6 +159,40 @@ abstract class Message {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getProtocol() {
|
||||||
|
return $this->protocol;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $protocol
|
||||||
|
*/
|
||||||
|
public function setProtocol($protocol) {
|
||||||
|
|
||||||
|
if (strpos($protocol, '/') === false) {
|
||||||
|
list($this->protocol, $this->protocolVersion) = explode('/', $protocol, 2);
|
||||||
|
} else {
|
||||||
|
$this->protocol = $protocol;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getProtocolVersion() {
|
||||||
|
return $this->protocolVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $protocolVersion
|
||||||
|
*/
|
||||||
|
public function setProtocolVersion($protocolVersion) {
|
||||||
|
$this->protocolVersion = $protocolVersion;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,7 @@ require_once(dirname(__FILE__) . '/Message.inc.php');
|
||||||
require_once(dirname(__FILE__) . '/Response.inc.php');
|
require_once(dirname(__FILE__) . '/Response.inc.php');
|
||||||
require_once(dirname(__FILE__) . '/exceptions/CurlException.inc.php');
|
require_once(dirname(__FILE__) . '/exceptions/CurlException.inc.php');
|
||||||
|
|
||||||
// !TODO: Include port in the URI
|
// TODO: Include port in the URI
|
||||||
// !TODO: This and Response both have protocol members, but they are different.
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Request instance represents an HTTP request. This class has two main uses:
|
* A Request instance represents an HTTP request. This class has two main uses:
|
||||||
|
|
@ -73,13 +72,6 @@ class Request extends Message {
|
||||||
*/
|
*/
|
||||||
static protected $theRequest;
|
static protected $theRequest;
|
||||||
|
|
||||||
/**
|
|
||||||
* Protocal for the request (e.g., http, https)
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $protocol = 'http';
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
// !Accessors
|
// !Accessors
|
||||||
|
|
||||||
|
|
@ -232,7 +224,7 @@ class Request extends Message {
|
||||||
*/
|
*/
|
||||||
public function getUri() {
|
public function getUri() {
|
||||||
|
|
||||||
$uri = $this->protocol . '://' . $this->hostname . $this->path;
|
$uri = strtolower($this->protocol) . '://' . $this->hostname . $this->path;
|
||||||
|
|
||||||
if ($this->query) {
|
if ($this->query) {
|
||||||
$uri .= '?' . http_build_query($this->query);
|
$uri .= '?' . http_build_query($this->query);
|
||||||
|
|
|
||||||
|
|
@ -21,14 +21,6 @@ require_once(dirname(__FILE__) . '/Message.inc.php');
|
||||||
*/
|
*/
|
||||||
class Response extends Message {
|
class Response extends Message {
|
||||||
|
|
||||||
/**
|
|
||||||
* The protocol. Set this to the protocol you wish to use, such as
|
|
||||||
* "HTTP/1.1". The default is $_SERVER['SERVER_PROTOCOL'] or HTTP/1.1
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $protocol;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Text explanation of the HTTP Status Code. You only need to set this if
|
* Text explanation of the HTTP Status Code. You only need to set this if
|
||||||
* you are using nonstandard status codes. Otherwise, the instance will
|
* you are using nonstandard status codes. Otherwise, the instance will
|
||||||
|
|
@ -231,7 +223,11 @@ class Response extends Message {
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function getStatusLine() {
|
protected function getStatusLine() {
|
||||||
return $this->protocol . ' ' . $this->statusCode . ' ' . $this->reasonPhrase;
|
return sprintf('%s/%s %s %s',
|
||||||
|
strtoupper($this->protocol),
|
||||||
|
$this->protocolVersion,
|
||||||
|
$this->statusCode,
|
||||||
|
$this->reasonPhrase);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue