|null The images array or null if unavailable */ public function getProductImages(string $productCode, ?string $hotelCode = null): ?array { $result = $this->getProductDetails($productCode, $hotelCode); if (true === isset($result['success']) && false === $result['success']) { return null; } return $result['hotel']['images'] ?? null; } /** * @return array|null */ public function getHotelImages(string $hotelCode): ?array { $result = $this->getHotelDetails($hotelCode); if (true === isset($result['success']) && false === $result['success']) { return null; } return $result['images'] ?? null; } /** @return array */ public function getHotelDetails(string $hotelCode): array { return $this->cache->get( sprintf('cms_hotel_%s', $hotelCode), function (ItemInterface $item) use ($hotelCode): array { $item->expiresAfter(3600); try { $request = $this->httpClient->request('GET', 'api/hotel', [ 'query' => [ 'hotel' => $hotelCode, 'key' => $this->apiKey, ], ]); } catch (ExceptionInterface $e) { $item->expiresAfter(0); return [ 'success' => false, 'message' => $e->getMessage(), ]; } try { $data = $request->toArray(); } catch (ExceptionInterface $e) { $item->expiresAfter(0); return [ 'success' => false, 'message' => $e->getMessage(), ]; } return $data; } ); } /** @return array */ public function getProductDetails(string $productCode, ?string $hotelCode = null): array { return $this->cache->get( sprintf('cms_product_%s_%s', $productCode, $hotelCode ?? ''), function (ItemInterface $item) use ($productCode, $hotelCode): array { $item->expiresAfter(3600); try { $request = $this->httpClient->request('GET', 'api/product', [ 'query' => [ 'product' => $productCode, 'hotel' => $hotelCode, 'key' => $this->apiKey, ], ]); } catch (ExceptionInterface $e) { $item->expiresAfter(0); return [ 'success' => false, 'message' => $e->getMessage(), ]; } try { $data = $request->toArray(); } catch (ExceptionInterface $e) { $item->expiresAfter(0); return [ 'success' => false, 'message' => $e->getMessage(), ]; } return $data; } ); } }