2
2
3
3
namespace RShief \Nab3aBundle \Console ;
4
4
5
- use GuzzleHttp \Client ;
5
+ use AppBundle \Entity \StreamParameters ;
6
+ use AppBundle \MergeStreamParameters ;
6
7
use Psr \Log \LoggerAwareTrait ;
7
8
use Symfony \Component \Console \Command \Command ;
8
- use Symfony \Component \Console \Input \InputArgument ;
9
9
use Symfony \Component \Console \Input \InputInterface ;
10
+ use Symfony \Component \Console \Input \InputOption ;
10
11
use Symfony \Component \Console \Output \OutputInterface ;
11
12
use Symfony \Component \DependencyInjection \ContainerAwareTrait ;
12
13
@@ -24,18 +25,31 @@ abstract class AbstractCommand extends Command
24
25
25
26
protected function configure ()
26
27
{
27
- $ this ->addArgument ('stream ' , InputArgument:: REQUIRED , 'stream id ' );
28
+ $ this ->addOption ('stream ' , ' s ' , InputOption:: VALUE_REQUIRED | InputOption:: VALUE_IS_ARRAY , 'stream id ' , [ ' enabled ' ] );
28
29
parent ::configure ();
29
30
}
30
31
31
32
public function initialize (InputInterface $ input , OutputInterface $ output )
32
33
{
33
34
$ 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
+ }
35
49
36
50
$ this ->params = [
37
51
'type ' => 'filter ' ,
38
- 'parameters ' => \ GuzzleHttp \json_decode ( $ response -> getBody (), true ),
52
+ 'parameters ' => $ serializer -> normalize ( $ params , ' json ' ),
39
53
];
40
54
}
41
55
}
0 commit comments