1: | <?php |
2: | namespace Worldline\Connect\Sdk\Communication; |
3: | |
4: | use Worldline\Connect\Sdk\Logging\BodyObfuscator; |
5: | use Worldline\Connect\Sdk\Logging\HeaderObfuscator; |
6: | |
7: | |
8: | |
9: | |
10: | |
11: | |
12: | class HttpObfuscator |
13: | { |
14: | const HTTP_VERSION = 'HTTP/1.1'; |
15: | |
16: | |
17: | protected $headerObfuscator; |
18: | |
19: | |
20: | protected $bodyObfuscator; |
21: | |
22: | public function __construct() |
23: | { |
24: | $this->headerObfuscator = new HeaderObfuscator(); |
25: | $this->bodyObfuscator = new BodyObfuscator(); |
26: | } |
27: | |
28: | |
29: | |
30: | |
31: | public function setBodyObfuscator(BodyObfuscator $bodyObfuscator) |
32: | { |
33: | $this->bodyObfuscator = $bodyObfuscator; |
34: | } |
35: | |
36: | |
37: | |
38: | |
39: | public function setHeaderObfuscator(HeaderObfuscator $headerObfuscator) |
40: | { |
41: | $this->headerObfuscator = $headerObfuscator; |
42: | } |
43: | |
44: | |
45: | |
46: | |
47: | |
48: | |
49: | |
50: | |
51: | public function getRawObfuscatedRequest( |
52: | $requestMethod, |
53: | $relativeRequestUri, |
54: | array $requestHeaders, |
55: | $requestBody = '' |
56: | ) |
57: | { |
58: | $rawObfuscatedRequest = $requestMethod . ' ' . $relativeRequestUri . ' ' . static::HTTP_VERSION; |
59: | if ($requestHeaders) { |
60: | $rawObfuscatedRequest .= PHP_EOL . implode(PHP_EOL, HttpHeaderHelper::generateRawHeaders( |
61: | $this->headerObfuscator->obfuscateHeaders($requestHeaders) |
62: | )); |
63: | } |
64: | if (strlen($requestBody) > 0) { |
65: | $rawObfuscatedRequest .= PHP_EOL . PHP_EOL . $this->bodyObfuscator->obfuscateBody( |
66: | array_key_exists('Content-Type', $requestHeaders) ? $requestHeaders['Content-Type'] : '', |
67: | $requestBody |
68: | ); |
69: | } |
70: | return $rawObfuscatedRequest; |
71: | } |
72: | |
73: | |
74: | |
75: | |
76: | |
77: | public function getRawObfuscatedResponse(ConnectionResponse $response) |
78: | { |
79: | $rawObfuscatedResponse = ''; |
80: | $responseHeaders = $response->getHeaders(); |
81: | if ($responseHeaders) { |
82: | $rawObfuscatedResponse .= implode(PHP_EOL, HttpHeaderHelper::generateRawHeaders( |
83: | $this->headerObfuscator->obfuscateHeaders($responseHeaders) |
84: | )); |
85: | } |
86: | $responseBody = $response->getBody(); |
87: | if (strlen($responseBody) > 0) { |
88: | $rawObfuscatedResponse .= PHP_EOL . PHP_EOL . $this->bodyObfuscator->obfuscateBody( |
89: | $response->getHeaderValue('Content-Type'), |
90: | $responseBody |
91: | ); |
92: | } |
93: | return $rawObfuscatedResponse; |
94: | } |
95: | } |
96: | |