Skip to content

Commit 0b06414

Browse files
committed
Add filter to userAgent service
1 parent 4683a1f commit 0b06414

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

Src/Console/SeleniumToolsController.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ public function actionIndex()
2020
}
2121
/**
2222
* Fill the base with data for the StepBrowser profiles e.g: UserAgents
23-
*
23+
* You ca use params in your request for filter user agents:
24+
* `php yii seleniumTools/fill-base chrome win`
25+
* `php yii seleniumTools/fill-base chrome 102.0`
2426
* @return void
2527
*/
26-
public function actionFillBase()
28+
public function actionFillBase(...$filterKeys)
2729
{
2830
$userAgentService = Yii::$container->get(UserAgentService::class);
29-
$userAgentService->fillBaseWithUserAgents();
31+
$userAgentService->fillBaseWithUserAgents($filterKeys);
3032
}
3133
}

Src/Utils/UserAgent/UserAgentService.php

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
namespace Zakharov\Yii2SeleniumTools\Utils\UserAgent;
44

5+
use PDO;
56
use Yii;
6-
use yii\helpers\ArrayHelper;
77
use Zakharov\Yii2SeleniumTools\models\UserAgent;
88
use Zakharov\Yii2SeleniumTools\Utils\UserAgent\UserAgentProvider;
99

@@ -24,19 +24,39 @@ public function __construct(UserAgentProvider $userAgentProvider)
2424
/**
2525
* fill base with user agents by specified in container userAgentProvider
2626
*
27+
* @param string[] $filterKey
2728
* @return int number of inserts
2829
*/
29-
public function fillBaseWithUserAgents()
30+
public function fillBaseWithUserAgents($filterKeys = [])
3031
{
3132
$arrayOfUserAgents = array_values($this->userAgentProvider->getArrayOfUserAgents());
3233
if (empty($arrayOfUserAgents)) {
3334
return 0;
3435
}
36+
$arrayOfUserAgents = $this->filterArrayOfUserAgentsWithFilter($arrayOfUserAgents, $filterKeys);
3537
$createdAt = (new \DateTime())->setTimezone(new \DateTimeZone('UTC'))->format('Y-m-d H:i:s');
3638
$updateArray = array_map(fn ($item) => [$item, $createdAt], $arrayOfUserAgents);
39+
3740
return Yii::$app->db
3841
->createCommand()
3942
->batchInsert(UserAgent::tableName(), ['ua', 'created_at'], $updateArray)
4043
->execute();
4144
}
45+
46+
/**
47+
* filterArrayOfUserAgentsWithFilter
48+
*
49+
* @param array $arrayOfUserAgents
50+
* @param array $filterKeys
51+
* @return void
52+
*/
53+
protected function filterArrayOfUserAgentsWithFilter(array $arrayOfUserAgents, array $filterKeys = [])
54+
{
55+
if (!empty($filterKeys)) {
56+
foreach ($filterKeys as $key) {
57+
$arrayOfUserAgents = array_filter($arrayOfUserAgents, fn ($item) => stripos($item, $key) !== false);
58+
}
59+
}
60+
return $arrayOfUserAgents;
61+
}
4262
}

0 commit comments

Comments
 (0)