/**
  * Parse and build a rich response object from an HTTP response.
  *
  * @param ResponseInterface $response
  *
  * @return GetCategoryByIdResponse
  * @throws InvalidFormatException
  */
 public function makeFromResponse(ResponseInterface $response)
 {
     $body = $this->parse($response);
     $factory = new CategoryMappingFactory();
     $categoryResponse = new GetCategoryByIdResponse();
     $categoryResponse->setInnerResponse($response);
     $categoryResponse->setCategoryMapping($factory->makeFromArray($body));
     return $categoryResponse;
 }
 /**
  * Parse category mappings.
  *
  * @param GetAsinCategoriesResponse $categoriesResponse
  * @param array $body
  */
 protected function parseMappings(GetAsinCategoriesResponse $categoriesResponse, array $body)
 {
     $factory = new CategoryMappingFactory();
     $categoriesResponse->setCategoryMappings(Std::map(function ($rawMapping) use($factory, $categoriesResponse) {
         $mapping = $factory->makeFromArray($rawMapping);
         if ($mapping->isMainCategory()) {
             $categoriesResponse->setMainCategory($mapping);
         }
         return $mapping;
     }, $body['categoryMappings']));
 }