/**
  * Collect data for GuzzleHttp
  *
  * @param GuzzleHttpEvent $event
  */
 public function onGuzzleHttpCommand(GuzzleHttpEvent $event)
 {
     $request = $event->getRequest();
     $response = $event->getResponse();
     $statusCode = $response->getStatusCode();
     if ($statusCode > 499) {
         $this->data['guzzleHttp']['has5x'] = true;
     }
     if ($statusCode > 399 && $statusCode < 500) {
         $this->data['guzzleHttp']['has4x'] = true;
     }
     $request->getBody()->rewind();
     $response->getBody()->rewind();
     $data = ['uri' => $request->getUri() . "", 'method' => $request->getMethod(), 'responseCode' => $statusCode, 'responseReason' => $response->getReasonPhrase(), 'executionTime' => $event->getExecutionTime(), 'requestBody' => $request->getBody()->getContents(), 'responseBody' => $response->getBody()->getContents(), 'requestHeaders' => $request->getHeaders(), 'responseHeaders' => $response->getHeaders(), 'curl' => ['redirectCount' => isset($response->curlInfo['redirect_count']) ? $response->curlInfo['redirect_count'] : 0, 'redirectTime' => isset($response->curlInfo['redirect_time']) ? $response->curlInfo['redirect_time'] : 0], 'cache' => isset($response->cached) ? 1 : 0, 'cacheTtl' => isset($response->cacheTtl) ? $response->cacheTtl : 0];
     if (in_array("application/json", $request->getHeader("Content-Type"))) {
         try {
             $data["requestBody"] = json_encode(json_decode($data["requestBody"]), JSON_PRETTY_PRINT);
         } catch (Exception $ex) {
             // ignore exception, leave it as a string.
         }
     }
     if (in_array("application/json", $response->getHeader("Content-Type"))) {
         try {
             $data["responseBody"] = json_encode(json_decode($data["responseBody"]), JSON_PRETTY_PRINT);
         } catch (Exception $ex) {
             // ignore exception, leave it as a string.
         }
     }
     $this->data['guzzleHttp']['commands']->enqueue($data);
 }
 /**
  * Initialize event
  *
  * @param RequestInterface $request
  */
 protected function initEvent(RequestInterface $request)
 {
     $event = new GuzzleHttpEvent();
     $event->setExecutionStart();
     $event->setRequest($request);
     $event->setClientId($this->clientId);
     $this->events[$this->getEventKey($request)] = $event;
 }