/**
  * @inheritdoc
  * @throws ResponseBuilderException
  */
 public function build(ResponseInterface $response)
 {
     if ($response->getErrors()->count() <= 0) {
         throw new ResponseBuilderException('One error at least is required in order to build a restful error');
     }
     $data = $this->buildData($response);
     $data->code = $response->getHttpErrorCode()->getValue();
     $data->message = $response->getErrors()->first()->getMessage()->getValue();
     $data->errors = [];
     /** @var ErrorInterface $error */
     foreach ($response->getErrors() as $error) {
         $errorData = new \stdClass();
         $errorData->message = $error->getMessage()->getValue();
         $errorData->reason = $error->getReason()->getValue();
         $errorData->location = $error->getLocation()->getValue();
         $data->errors[] = $errorData;
     }
     return $data;
 }
 /**
  * @param ResponseInterface $response
  * @return \stdClass
  *
  * @throws Crak\Component\RestNormalizer\Exception\ResponseBuilderException
  */
 public function buildData(ResponseInterface $response)
 {
     $data = new \stdClass();
     $data->apiVersion = $response->getApiVersion()->getValue();
     $data->method = $response->getHttpMethod()->getValue();
     $data->params = new \stdClass();
     /** @var Crak\Component\RestNormalizer\ParameterInterface $parameter */
     foreach ($response->getParameters() as $parameter) {
         $values = $parameter->getValues();
         $nbValues = count($values);
         $plainValues = null;
         if ($nbValues === 1) {
             $plainValues = $values->first()->getValue();
         } else {
             if ($nbValues > 1) {
                 foreach ($values as $value) {
                     $plainValues[] = $value->getValue();
                 }
             }
         }
         $data->params->{$parameter->getId()->getValue()} = $plainValues;
     }
     return $data;
 }