mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
Allowing the user change the response class.
This commit is contained in:
parent
176da15417
commit
2f64afe44e
2 changed files with 52 additions and 1 deletions
|
@ -76,6 +76,13 @@ class HttpSocket extends CakeSocket {
|
|||
*/
|
||||
public $response = null;
|
||||
|
||||
/**
|
||||
* Response classname
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $responseClass = 'HttpResponse';
|
||||
|
||||
/**
|
||||
* Configuration settings for the HttpSocket and the requests
|
||||
*
|
||||
|
@ -367,7 +374,11 @@ class HttpSocket extends CakeSocket {
|
|||
$this->disconnect();
|
||||
}
|
||||
|
||||
$this->response = new HttpResponse($response);
|
||||
if (!App::import('Lib', $this->responseClass)) {
|
||||
throw new Exception(__('Class %s not found.', $this->responseClass));
|
||||
}
|
||||
$responseClass = $this->responseClass;
|
||||
$this->response = new $responseClass($response);
|
||||
if (!empty($this->response->cookies)) {
|
||||
if (!isset($this->config['request']['cookies'][$Host])) {
|
||||
$this->config['request']['cookies'][$Host] = array();
|
||||
|
|
|
@ -51,6 +51,29 @@ class TestAuthentication {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* CustomResponse
|
||||
*
|
||||
*/
|
||||
class CustomResponse {
|
||||
|
||||
/**
|
||||
* First 10 chars
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $first10;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
*/
|
||||
public function __construct($message) {
|
||||
$this->first10 = substr($message, 0, 10);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* TestHttpSocket
|
||||
*
|
||||
|
@ -659,6 +682,23 @@ class HttpSocketTest extends CakeTestCase {
|
|||
$this->assertEqual($this->Socket->config['request']['cookies'], $expected);
|
||||
}
|
||||
|
||||
/**
|
||||
* testRequestCustomResponse
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testRequestCustomResponse() {
|
||||
$this->Socket->connected = true;
|
||||
$serverResponse = "HTTP/1.x 200 OK\r\nDate: Mon, 16 Apr 2007 04:14:16 GMT\r\nServer: CakeHttp Server\r\nContent-Type: text/html\r\n\r\n<h1>This is a test!</h1>";
|
||||
$this->Socket->expects($this->at(1))->method('read')->will($this->returnValue($serverResponse));
|
||||
$this->Socket->expects($this->at(2))->method('read')->will($this->returnValue(false));
|
||||
|
||||
$this->Socket->responseClass = 'CustomResponse';
|
||||
$response = $this->Socket->request('http://www.cakephp.org/');
|
||||
$this->assertIsA($response, 'CustomResponse');
|
||||
$this->assertEqual($response->first10, 'HTTP/1.x 2');
|
||||
}
|
||||
|
||||
/**
|
||||
* testProxy method
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue