DefaultRequestFactory::getHeaders()   B
last analyzed

Complexity

Conditions 5
Paths 5

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 18
rs 8.8571
cc 5
eloc 11
nc 5
nop 0
1
<?php
2
3
namespace HelePartnerSyncApi\Request;
4
5
use HelePartnerSyncApi\Client;
6
7
class DefaultRequestFactory implements RequestFactory
8
{
9
10
	/**
11
	 * @var string
12
	 */
13
	private $secret;
14
15
	/**
16
	 * @param string $secret
17
	 */
18
	public function __construct($secret)
19
	{
20
		$this->secret = $secret;
21
	}
22
23
	/**
24
	 * @return Request
25
	 */
26
	public function createRequest()
27
	{
28
		$headers = $this->getHeaders();
29
30
		if (!isset($headers[Client::HEADER_SIGNATURE])) {
31
			throw new RequestException(sprintf('Missing %s header in HTTP request', Client::HEADER_SIGNATURE));
32
		}
33
34
		if (!isset($headers[Client::HEADER_SIGNATURE_ALGORITHM])) {
35
			throw new RequestException(sprintf('Missing %s header in HTTP request', Client::HEADER_SIGNATURE_ALGORITHM));
36
		}
37
38
		return new Request(file_get_contents('php://input'), $this->secret, $headers[Client::HEADER_SIGNATURE], $headers[Client::HEADER_SIGNATURE_ALGORITHM]);
39
	}
40
41
	/**
42
	 * @return string[]
43
	 */
44
	private function getHeaders()
45
	{
46
		if (function_exists('apache_request_headers')) {
47
			return apache_request_headers();
48
		}
49
50
		$headers = array();
51
		foreach ($_SERVER as $k => $v) {
52
			if (strncmp($k, 'HTTP_', 5) == 0) {
53
				$k = substr($k, 5);
54
			} elseif (strncmp($k, 'CONTENT_', 8)) {
55
				continue;
56
			}
57
			$headers[strtr($k, '_', '-')] = $v;
58
		}
59
60
		return $headers;
61
	}
62
63
}
64