Skip to content

Commit a858149

Browse files
committed
Add default headers
1 parent fa23d66 commit a858149

2 files changed

Lines changed: 48 additions & 0 deletions

File tree

src/Client.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,13 @@ final class Client
9494
*/
9595
private $_handles = [];
9696

97+
/**
98+
* Array of headers that are passed on every request unless they are overridden
99+
*
100+
* @var array
101+
*/
102+
private $_defaultHeaders = [];
103+
97104
/**
98105
* Create a new instance of Client
99106
*
@@ -304,6 +311,18 @@ public function end($handle)
304311
return $response;
305312
}
306313

314+
/**
315+
* Set the default headers
316+
*
317+
* @param array The default headers
318+
*
319+
* @return void
320+
*/
321+
public function setDefaultHeaders($defaultHeaders)
322+
{
323+
$this->_defaultHeaders = $defaultHeaders;
324+
}
325+
307326
private static function _isExpiredToken(Response $response)
308327
{
309328
if ($response->getHttpCode() !== 401) {
@@ -382,6 +401,7 @@ private function _setTokenFromCache()
382401
*/
383402
private function _start($url, $method, $body = null, array $headers = [])
384403
{
404+
$headers += $this->_defaultHeaders;
385405
$headers['Accept-Encoding'] = 'gzip';
386406
if ($this->_accessToken === null) {
387407
$this->_setTokenFromCache();

tests/ClientTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,34 @@ public function invalidTokenIsRefreshed()
7777
$this->assertSame(200, $client->end($client->startIndex('a resource', []))->getHttpCode());
7878
}
7979

80+
/**
81+
* @test
82+
* @group unit
83+
* @covers ::setDefaultHeaders
84+
* @uses \DominionEnterprises\Api\Client::setDefaultHeaders
85+
* @uses \DominionEnterprises\Api\Client::startIndex
86+
* @uses \DominionEnterprises\Api\Client::end
87+
*/
88+
public function defaultHeadersArePassed()
89+
{
90+
$adapter = $this->getMockBuilder('\DominionEnterprises\Api\Adapter')->setMethods(['start', 'end'])->getMock();
91+
$adapter->expects($this->once())->method('start')->with(
92+
$this->callback(
93+
function($request) {
94+
$this->assertEquals('foo', $request->getHeaders()['testHeader']);
95+
return true;
96+
}
97+
)
98+
);
99+
$adapter->expects($this->once())->method('end')->will(
100+
$this->returnValue(new Response(200, ['Content-Type' => ['application/json']], []))
101+
);
102+
$authentication = Authentication::createClientCredentials('not under test', 'not under test');
103+
$client = new Client($adapter, $authentication, 'a url', Client::CACHE_MODE_NONE, null, 'foo');
104+
$client->setDefaultHeaders(['testHeader' => 'foo']);
105+
$this->assertSame(200, $client->end($client->startIndex('a resource', []))->getHttpCode());
106+
}
107+
80108
/**
81109
* @test
82110
* @group unit

0 commit comments

Comments
 (0)