/**
  * {@inheritdoc}
  */
 public function sendRequest($body)
 {
     $stopwatchId = uniqid('speicher210_fastbill.collector.transport.');
     $this->stopwatch->start($stopwatchId);
     $return = $this->service->sendRequest($body);
     $stop = $this->stopwatch->stop($stopwatchId);
     $this->requests[] = array('time' => $stop->getDuration(), 'request' => json_decode($body, true), 'response' => json_decode($return, true));
     return $return;
 }
 /**
  * Send a request to fastbill.
  *
  * @param mixed $request The request to send.
  * @param string $responseClass The class that should be used to unserialize the response.
  * @return ApiResponseInterface
  */
 protected function sendRequest(RequestInterface $request, $responseClass)
 {
     if (!in_array(ApiResponseInterface::class, class_implements($responseClass))) {
         throw new \InvalidArgumentException('The response class must implement "' . ApiResponseInterface::class . '".');
     }
     $body = $this->serializer->serialize($request, 'json');
     $response = $this->transport->sendRequest($body);
     return $this->serializer->deserialize($response, $responseClass, 'json');
 }
 /**
  * Send a request to fastbill.
  *
  * @param mixed $request The request to send.
  * @param string $responseClass The class that should be used to unserialize the response.
  * @return ApiResponseInterface
  * @throws ApiResponseException If the API response has errors.
  */
 protected function sendRequest(RequestInterface $request, $responseClass)
 {
     if (!in_array(ApiResponseInterface::class, class_implements($responseClass))) {
         throw new \InvalidArgumentException('The response class must implement "' . ApiResponseInterface::class . '".');
     }
     $body = $this->serializer->serialize($request, 'json');
     $response = $this->transport->sendRequest($body);
     /** @var ApiResponseInterface $apiResponse */
     $apiResponse = $this->serializer->deserialize($response, $responseClass, 'json');
     if ($apiResponse->getResponse() !== null && $apiResponse->getResponse()->hasErrors()) {
         throw new ApiResponseException(sprintf('Error calling "%s"', $request->getService()), $apiResponse->getResponse()->getErrors());
     }
     return $apiResponse;
 }