Skip to content

Commit 5d7d25a

Browse files
committed
Use CaseInsensitiveArray when setting headers
1 parent 44469ec commit 5d7d25a

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

src/Curl/Curl.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public function __construct()
4949
$this->setDefaultUserAgent();
5050
$this->setOpt(CURLINFO_HEADER_OUT, true);
5151
$this->setOpt(CURLOPT_RETURNTRANSFER, true);
52+
$this->headers = new CaseInsensitiveArray();
5253
}
5354

5455
public function get($url_mixed, $data = array())
@@ -212,9 +213,13 @@ public function setBasicAuthentication($username, $password = '')
212213
public function setHeader($key, $value)
213214
{
214215
$this->headers[$key] = $value;
216+
$headers = array();
217+
foreach ($this->headers as $key => $value) {
218+
$headers[$key] = $value;
219+
}
215220
$this->setOpt(CURLOPT_HTTPHEADER, array_map(function($value, $key) {
216221
return $key . ': ' . $value;
217-
}, $this->headers, array_keys($this->headers)));
222+
}, $headers, array_keys($headers)));
218223
}
219224

220225
public function unsetHeader($key)

tests/PHPCurlClass/PHPCurlClassTest.php

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,24 @@ public function testErrorMessage()
507507
$this->assertEquals('HTTP/1.1 401 Unauthorized', $test->curl->error_message);
508508
}
509509

510-
public function testHeaders()
510+
public function testRequestHeaderCaseSensitivity()
511+
{
512+
$content_type = 'application/json';
513+
$curl = new Curl();
514+
$curl->setHeader('Content-Type', $content_type);
515+
516+
$reflector = new ReflectionClass('\Curl\Curl');
517+
$property = $reflector->getProperty('headers');
518+
$property->setAccessible(true);
519+
$headers = $property->getValue($curl);
520+
521+
$this->assertEquals($content_type, $headers['Content-Type']);
522+
$this->assertEquals($content_type, $headers['content-type']);
523+
$this->assertEquals($content_type, $headers['CONTENT-TYPE']);
524+
$this->assertEquals($content_type, $headers['cOnTeNt-TyPe']);
525+
}
526+
527+
public function testResponseHeaders()
511528
{
512529
$test = new Test();
513530
$test->curl->setHeader('Content-Type', 'application/json');
@@ -518,7 +535,7 @@ public function testHeaders()
518535
$this->assertEquals('application/json', $test->server('server', 'GET', array('key' => 'HTTP_ACCEPT')));
519536
}
520537

521-
public function testHeaderCaseSensitivity()
538+
public function testResponseHeaderCaseSensitivity()
522539
{
523540
$content_type = 'application/json';
524541
$test = new Test();

0 commit comments

Comments
 (0)