+/**
+ * @ingroup HTTP
+ */
+class FauxResponse extends WebResponse {
+ private $headers;
+ private $cookies;
+ private $code;
+
+ /**
+ * Stores a HTTP header
+ * @param $string String: header to output
+ * @param $replace Bool: replace current similar header
+ * @param $http_response_code null|int Forces the HTTP response code to the specified value.
+ */
+ public function header( $string, $replace = true, $http_response_code = null ) {
+ if ( substr( $string, 0, 5 ) == 'HTTP/' ) {
+ $parts = explode( ' ', $string, 3 );
+ $this->code = intval( $parts[1] );
+ } else {
+ list( $key, $val ) = array_map( 'trim', explode( ":", $string, 2 ) );
+
+ if( $replace || !isset( $this->headers[$key] ) ) {
+ $this->headers[$key] = $val;
+ }
+ }
+
+ if ( $http_response_code !== null ) {
+ $this->code = intval( $http_response_code );
+ }
+ }
+
+ /**
+ * @param $key string
+ * @return string
+ */
+ public function getheader( $key ) {
+ if ( isset( $this->headers[$key] ) ) {
+ return $this->headers[$key];
+ }
+ return null;
+ }
+
+ /**
+ * Get the HTTP response code, null if not set
+ *
+ * @return Int or null
+ */
+ public function getStatusCode() {
+ return $this->code;
+ }
+
+ /**
+ * @param $name String: name of cookie
+ * @param $value String: value to give cookie
+ * @param $expire Int: number of seconds til cookie expires
+ */
+ public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null ) {
+ $this->cookies[$name] = $value;
+ }
+
+ /**
+ * @param $name string
+ * @return string
+ */
+ public function getcookie( $name ) {
+ if ( isset( $this->cookies[$name] ) ) {
+ return $this->cookies[$name];
+ }
+ return null;
+ }
+}