/** * Getting Guzzle mock response. * * @param string $requestUrl Full API endpoint URL * @param mixed $requestBody Request body. * * @return Mock Guzzle mock response. */ private function getMock($requestUrl, $requestBody) { if (!is_string($requestBody)) { $requestBody = print_r($requestBody, true); } $filename = self::$settings->mockResponsesDir . md5($requestUrl) . md5($requestBody) . '.inc'; if (file_exists($filename)) { $data = null; require $filename; $data['headers'] = (array) json_decode(htmlspecialchars_decode($data['headers_json'], ENT_QUOTES)); $mockResponse = new Response($data['httpCode']); $mockResponse->setHeaders($data['headers']); $separator = "\r\n\r\n"; $bodyParts = explode($separator, htmlspecialchars_decode($data['response']), ENT_QUOTES); if (count($bodyParts) > 1) { $mockResponse->setBody(Stream::factory($bodyParts[count($bodyParts) - 1])); } else { $mockResponse->setBody(Stream::factory(htmlspecialchars_decode($data['response']))); } $mock = new Mock([$mockResponse]); } else { $mockResponse = new Response(404); $mock = new Mock([$mockResponse]); } return $mock; }