Split command class into more manageable methods
This commit is contained in:
@@ -35,9 +35,23 @@ class ScrapeWebsite extends Command
|
|||||||
{
|
{
|
||||||
$progress = new ProgressBar($output);
|
$progress = new ProgressBar($output);
|
||||||
$progress->start();
|
$progress->start();
|
||||||
|
$products = $this->getProducts();
|
||||||
|
$progress->setMaxSteps(count($products));
|
||||||
|
foreach ($products as $product) {
|
||||||
|
$this->saveProduct($product);
|
||||||
|
$progress->advance();
|
||||||
|
}
|
||||||
|
$progress->finish();
|
||||||
|
$output->writeln('');
|
||||||
|
$output->writeln('DONE');
|
||||||
|
return Command::SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getProducts(): array
|
||||||
|
{
|
||||||
|
$products = [];
|
||||||
$page = 0;
|
$page = 0;
|
||||||
do {
|
do {
|
||||||
$progress->advance();
|
|
||||||
$res = $this->client->request('POST', 'https://pl.ryobitools.eu/api/product-listing/get-products', [
|
$res = $this->client->request('POST', 'https://pl.ryobitools.eu/api/product-listing/get-products', [
|
||||||
'form_params' => [
|
'form_params' => [
|
||||||
"includePreviousPages" => false,
|
"includePreviousPages" => false,
|
||||||
@@ -48,9 +62,13 @@ class ScrapeWebsite extends Command
|
|||||||
]);
|
]);
|
||||||
$page++;
|
$page++;
|
||||||
$responseObject = json_decode($res->getBody()->getContents());
|
$responseObject = json_decode($res->getBody()->getContents());
|
||||||
$products = $responseObject->products;
|
$products = array_merge($products, $responseObject->products);
|
||||||
$progress->setMaxSteps($progress->getMaxSteps() + count($products));
|
} while ((bool)$responseObject->canLoadMore);
|
||||||
foreach ($products as $product) {
|
return $products;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function saveProduct(\stdClass $product)
|
||||||
|
{
|
||||||
/** @var Product $productModel */
|
/** @var Product $productModel */
|
||||||
$productModel = Product::firstOrNew(['skuID' => $product->skuID]);
|
$productModel = Product::firstOrNew(['skuID' => $product->skuID]);
|
||||||
$productModel->skuID = $product->skuID;
|
$productModel->skuID = $product->skuID;
|
||||||
@@ -72,12 +90,5 @@ class ScrapeWebsite extends Command
|
|||||||
$price->lowestProductPrice30Days = $product->lowestProductPrice30Days;
|
$price->lowestProductPrice30Days = $product->lowestProductPrice30Days;
|
||||||
$productModel->price()->save($price);
|
$productModel->price()->save($price);
|
||||||
}
|
}
|
||||||
$progress->advance();
|
|
||||||
}
|
|
||||||
} while ((bool)$responseObject->canLoadMore);
|
|
||||||
$progress->finish();
|
|
||||||
$output->writeln('');
|
|
||||||
$output->writeln('DONE');
|
|
||||||
return Command::SUCCESS;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user