diff --git a/src/Models/Firewalls/Firewall.php b/src/Models/Firewalls/Firewall.php index 50c4e1e..6e5fbb9 100644 --- a/src/Models/Firewalls/Firewall.php +++ b/src/Models/Firewalls/Firewall.php @@ -122,8 +122,10 @@ public static function parse($input): ?self } foreach ($input->applied_to as $a) { - if ($a->type === 'server') { + if ($a->type === FirewallResource::TYPE_SERVER) { $appliedTo[] = new FirewallResource($a->type, new Server($a->server->id)); + } elseif ($a->type == FirewallResource::TYPE_LABEL_SELECTOR) { + $appliedTo[] = new FirewallResource($a->type, null, $a->label_selector->selector); } } diff --git a/src/Models/Firewalls/FirewallResource.php b/src/Models/Firewalls/FirewallResource.php index ea27848..0d65019 100644 --- a/src/Models/Firewalls/FirewallResource.php +++ b/src/Models/Firewalls/FirewallResource.php @@ -10,6 +10,7 @@ class FirewallResource { const TYPE_SERVER = 'server'; + const TYPE_LABEL_SELECTOR = 'label_selector'; /** * @var string @@ -20,26 +21,36 @@ class FirewallResource */ public $server; + /** + * @var string|null + */ + public $selector; + /** * FirewallResource constructor. * * @param string $type * @param Server|null $server + * @param string|null $selector */ - public function __construct(string $type, ?Server $server) + public function __construct(string $type, ?Server $server = null, ?string $selector = null) { $this->type = $type; $this->server = $server; + $this->selector = $selector; } /** - * @return string[] + * @return array */ public function toRequestSchema(): array { $s = ['type' => $this->type]; - if ($this->type == self::TYPE_SERVER) { + + if ($this->type == self::TYPE_SERVER && $this->server !== null) { $s['server'] = ['id' => $this->server->id]; + } elseif ($this->type == self::TYPE_LABEL_SELECTOR && $this->selector !== null) { + $s['label_selector'] = ['selector' => $this->selector]; } return $s;