/**
  * @param Store $store
  *
  * @return int
  */
 public function fetchStorePrice(Store $store)
 {
     $client = new Http();
     /** @var \Symfony\Component\DomCrawler\Crawler $crawler */
     $crawler = $client->request('GET', $store->getUrl());
     /** @var \Symfony\Component\BrowserKit\Response $response */
     $response = $client->getResponse();
     if ($response->getStatus() != 200) {
         throw new \RuntimeException('Request failed "' . $store->getUrl() . '" (' . $response->getStatus() . ')');
     }
     $element = $crawler->filter($store->getSelector());
     $selectorValue = $store->getSelectorValue();
     switch ($selectorValue) {
         case 'innerHTML':
             $value = $element->html();
             break;
         default:
             $value = $element->attr($selectorValue);
             break;
     }
     return $this->getPriceValue($value);
 }
Example #2
0
 public function init()
 {
     setlocale(LC_MONETARY, $this->config['locale']);
     foreach ($this->config['product'] as $productData) {
         $product = new Product();
         $product->setName($productData['name']);
         $product->setPictureUrl($productData['picture']);
         foreach ($productData['store'] as $storeData) {
             $store = new Store();
             $store->setName($storeData['name']);
             $store->setUrl($storeData['url']);
             $selectorData = $storeData['selector'];
             $store->setSelector($selectorData['path']);
             $store->setSelectorValue($selectorData['value']);
             $store->setProduct($product);
             $product->addStore($store);
         }
         $this->addProduct($product);
     }
 }