/** * @param Response $response * * @return HotelCollection */ public static function fromResponse(Response $response) { $responseData = $response->getContentAsArray(); $hotelCollection = new static(); $hotelCollection->pollingFinished = $response->getHttpCode() === 200; $hotelCollection->searchParams = $responseData['search_params']; $hotelCollection->resultInfo = ResultInfo::fromArray($responseData['result_info']); if (isset($responseData['_links']['next'])) { $hotelCollection->hasNextPage = true; $hotelCollection->nextPageOffset = static::extractOffsetFromUrl($responseData['_links']['next']['href']); } if (isset($responseData['_links']['prev'])) { $hotelCollection->hasPrevPage = true; $hotelCollection->prevPageOffset = static::extractOffsetFromUrl($responseData['_links']['prev']['href']); } foreach ($responseData['hotels'] as $data) { $hotelDetails = $data['_embedded']['hotel_details']; $hotelRates = $data['_embedded']['hotel_rates']; $hotelCollection->hotel[] = new Hotel($hotelDetails['id'], $hotelDetails['name'], $hotelDetails['category'], $hotelDetails['superior'], $hotelDetails['city'], $hotelDetails['rating_value'], $hotelDetails['rating_count'], Image::fromArray($hotelDetails['main_image']), array_map(function (array $deal) { return Deal::fromArray($deal); }, $hotelRates)); } return $hotelCollection; }
public static function fromResponse(Response $response) { $data = $response->getContentAsArray(); $hotelDetails = new static(); $hotelDetails->itemId = (int) $data['item_id']; $hotelDetails->name = $data['name']; $hotelDetails->address = $data['address']; $hotelDetails->zip = $data['zip']; $hotelDetails->city = $data['city']; $hotelDetails->geoCoordinates = GeoCoordinates::fromArray($data['geo_coordinates']); $hotelDetails->category = (int) $data['category']; $hotelDetails->superior = (bool) $data['superior']; $hotelDetails->homepage = $data['homepage']; $hotelDetails->ratingValue = (double) $data['rating_value']; $hotelDetails->ratingCount = (int) $data['rating_count']; $hotelDetails->description = $data['description']; $hotelDetails->path = Path::fromArray($data['path']); $hotelDetails->mainImage = Image::fromArray($data['main_image']); foreach ($data['gallery'] as $imageData) { $hotelDetails->galleryImages[] = Image::fromArray($imageData); } return $hotelDetails; }