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: * Class HttpObfuscator
9: *
10: * @package Worldline\Connect\Sdk\Communication
11: */
12: class HttpObfuscator
13: {
14: const HTTP_VERSION = 'HTTP/1.1';
15:
16: /** @var HeaderObfuscator */
17: protected $headerObfuscator;
18:
19: /** @var BodyObfuscator */
20: protected $bodyObfuscator;
21:
22: public function __construct()
23: {
24: $this->headerObfuscator = new HeaderObfuscator();
25: $this->bodyObfuscator = new BodyObfuscator();
26: }
27:
28: /**
29: * @param BodyObfuscator $bodyObfuscator
30: */
31: public function setBodyObfuscator(BodyObfuscator $bodyObfuscator)
32: {
33: $this->bodyObfuscator = $bodyObfuscator;
34: }
35:
36: /**
37: * @param HeaderObfuscator $headerObfuscator
38: */
39: public function setHeaderObfuscator(HeaderObfuscator $headerObfuscator)
40: {
41: $this->headerObfuscator = $headerObfuscator;
42: }
43:
44: /**
45: * @param string $requestMethod
46: * @param string $relativeRequestUri
47: * @param array $requestHeaders
48: * @param string $requestBody
49: * @return string
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: * @param ConnectionResponse $response
75: * @return string
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: