Skip to content

Commit 8decdd7

Browse files
committed
support batched parameters.
1 parent bb0f4ea commit 8decdd7

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

Console/AbstractCommand.php

+19-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
namespace RShief\Nab3aBundle\Console;
44

5-
use GuzzleHttp\Client;
5+
use AppBundle\Entity\StreamParameters;
6+
use AppBundle\MergeStreamParameters;
67
use Psr\Log\LoggerAwareTrait;
78
use Symfony\Component\Console\Command\Command;
8-
use Symfony\Component\Console\Input\InputArgument;
99
use Symfony\Component\Console\Input\InputInterface;
10+
use Symfony\Component\Console\Input\InputOption;
1011
use Symfony\Component\Console\Output\OutputInterface;
1112
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
1213

@@ -24,18 +25,31 @@ abstract class AbstractCommand extends Command
2425

2526
protected function configure()
2627
{
27-
$this->addArgument('stream', InputArgument::REQUIRED, 'stream id');
28+
$this->addOption('stream', 's', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'stream id', ['enabled']);
2829
parent::configure();
2930
}
3031

3132
public function initialize(InputInterface $input, OutputInterface $output)
3233
{
3334
$client = $this->container->get('nab3a.guzzle.client.params');
34-
$response = $client->get('stream/'.$input->getArgument('stream'));
35+
$serializer = $this->container->get('serializer');
36+
$merger = new MergeStreamParameters();
37+
$params = new StreamParameters();
38+
foreach ($input->getOption('stream') as $stream) {
39+
if (ctype_digit($stream)) {
40+
$response = $client->get('stream/'.$stream);
41+
$streamParameter = $serializer->deserialize($response->getBody(), StreamParameters::class, 'json');
42+
$params = $merger->merge([$streamParameter, $params]);
43+
} elseif ($stream === 'enabled') {
44+
$response = $client->get('stream', ['query' => ['enabled' => 1]]);
45+
$streamParameter = $serializer->deserialize($response->getBody(), StreamParameters::class .'[]', 'json');
46+
$params = $merger->merge($streamParameter);
47+
}
48+
}
3549

3650
$this->params = [
3751
'type' => 'filter',
38-
'parameters' => \GuzzleHttp\json_decode($response->getBody(), true),
52+
'parameters' => $serializer->normalize($params, 'json'),
3953
];
4054
}
4155
}

Stream/PipeCommand.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,13 @@ protected function execute(InputInterface $input, OutputInterface $output)
5555
// but it still stupidly allows these situations to arise.
5656
// $timer = $watcher->watch($resource);
5757

58+
$stringOption = implode(' ', array_map(function ($option) {
59+
return '--stream '. $option;
60+
}, $input->getOption('stream')));
61+
5862
$process = $this->container
5963
->get('nab3a.process.child_process')
60-
->makeChildProcess('stream:read:twitter '.$input->getArgument('stream'));
64+
->makeChildProcess('stream:read:twitter '.$stringOption);
6165

6266
$this->attachListeners($process);
6367

0 commit comments

Comments
 (0)