Header management code added.
This commit is contained in:
parent
6013bf3b8a
commit
fde9d44030
@ -451,6 +451,28 @@ class Object {
|
|||||||
return $this->additionalHeaders;
|
return $this->additionalHeaders;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove headers.
|
||||||
|
*
|
||||||
|
* This takes an array of header names, and removes
|
||||||
|
* any matching headers. Typically, only headers set
|
||||||
|
* by setAdditionalHeaders() are removed from an Object.
|
||||||
|
* (RemoteObject works differently).
|
||||||
|
*
|
||||||
|
* @attention
|
||||||
|
* Many headers are generated automatically, such as
|
||||||
|
* Content-Type and Content-Length. Removing these
|
||||||
|
* will simply result in their being regenerated.
|
||||||
|
*
|
||||||
|
* @param array $keys
|
||||||
|
* The header names to be removed.
|
||||||
|
*/
|
||||||
|
public function removeHeaders($keys) {
|
||||||
|
foreach ($keys as $k) {
|
||||||
|
unset($this->additionalHeaders[$k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This object should be transmitted in chunks.
|
* This object should be transmitted in chunks.
|
||||||
*
|
*
|
||||||
|
@ -296,8 +296,22 @@ class RemoteObject extends Object {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given an array of keys, remove the headers.
|
* Given an array of header names.
|
||||||
*
|
*
|
||||||
|
* This will remove the given headers from the existing headers.
|
||||||
|
* Both additional headers and the original headers from the
|
||||||
|
* server are affected here.
|
||||||
|
*
|
||||||
|
* Note that you cannot remove metadata through this mechanism,
|
||||||
|
* as it is managed using the metadata() methods.
|
||||||
|
*
|
||||||
|
* @attention
|
||||||
|
* Many headers are generated automatically, such as
|
||||||
|
* Content-Type and Content-Length. Removing these
|
||||||
|
* will simply result in their being regenerated.
|
||||||
|
*
|
||||||
|
* @param array $keys
|
||||||
|
* The header names to be removed.
|
||||||
*/
|
*/
|
||||||
public function removeHeaders($keys) {
|
public function removeHeaders($keys) {
|
||||||
foreach ($keys as $key) {
|
foreach ($keys as $key) {
|
||||||
|
@ -131,4 +131,24 @@ class ObjectTest extends \HPCloud\Tests\TestCase {
|
|||||||
$this->assertEquals('Leibniz', $got['Gottfried']);
|
$this->assertEquals('Leibniz', $got['Gottfried']);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAdditionalHeaders() {
|
||||||
|
$o = $this->basicObjectFixture();
|
||||||
|
|
||||||
|
$extra = array(
|
||||||
|
'a' => 'b',
|
||||||
|
'aaa' => 'bbb',
|
||||||
|
'ccc' => 'bbb',
|
||||||
|
);
|
||||||
|
$o->setAdditionalHeaders($extra);
|
||||||
|
|
||||||
|
$got = $o->additionalHeaders();
|
||||||
|
$this->assertEquals(3, count($got));
|
||||||
|
|
||||||
|
$o->removeHeaders(array('ccc'));
|
||||||
|
|
||||||
|
|
||||||
|
$got = $o->additionalHeaders();
|
||||||
|
$this->assertEquals(2, count($got));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,6 +53,10 @@ class RemoteObjectTest extends \HPCloud\Tests\TestCase {
|
|||||||
$object->setMetadata(array(self::FMETA_NAME => self::FMETA_VALUE));
|
$object->setMetadata(array(self::FMETA_NAME => self::FMETA_VALUE));
|
||||||
$object->setDisposition(self::FDISPOSITION);
|
$object->setDisposition(self::FDISPOSITION);
|
||||||
$object->setEncoding(self::FENCODING);
|
$object->setEncoding(self::FENCODING);
|
||||||
|
$object->setAdditionalHeaders(array(
|
||||||
|
'Access-Control-Allow-Origin' => 'http://example.com',
|
||||||
|
'Access-control-allow-origin' => 'http://example.com',
|
||||||
|
));
|
||||||
|
|
||||||
// Need some headers that Swift actually stores and returns. This
|
// Need some headers that Swift actually stores and returns. This
|
||||||
// one does not seem to be returned ever.
|
// one does not seem to be returned ever.
|
||||||
@ -146,6 +150,15 @@ class RemoteObjectTest extends \HPCloud\Tests\TestCase {
|
|||||||
$headers = $obj->headers();
|
$headers = $obj->headers();
|
||||||
$this->assertTrue(count($headers) > 1);
|
$this->assertTrue(count($headers) > 1);
|
||||||
|
|
||||||
|
fwrite(STDOUT, print_r($headers, TRUE));
|
||||||
|
|
||||||
|
$this->assertNotEmpty($headers['Date']);
|
||||||
|
|
||||||
|
$obj->removeHeaders(array('Date'));
|
||||||
|
|
||||||
|
$headers = $obj->headers();
|
||||||
|
$this->assertFalse(isset($headers['Date']));
|
||||||
|
|
||||||
// Swift doesn't return CORS headers even though it is supposed to.
|
// Swift doesn't return CORS headers even though it is supposed to.
|
||||||
//$this->assertEquals(self::FCORS_VALUE, $headers[self::FCORS_NAME]);
|
//$this->assertEquals(self::FCORS_VALUE, $headers[self::FCORS_NAME]);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user