<?php 
 
/* 
 * This file is part of Chevere. 
 * 
 * (c) Rodolfo Berrios <[email protected]> 
 * 
 * For the full copyright and license information, please view the LICENSE 
 * file that was distributed with this source code. 
 */ 
 
declare(strict_types=1); 
 
namespace Chevere\Workflow; 
 
use Chevere\Workflow\Interfaces\ResponseReferenceInterface; 
use InvalidArgumentException; 
 
final class ResponseReference implements ResponseReferenceInterface 
{ 
    public function __construct( 
        private string $job, 
        private ?string $key = null, 
    ) { 
        $this->assertArgument($job, 100); 
        if ($key === null) { 
            return; 
        } 
        $this->assertArgument($key, 101); 
    } 
 
    public function __toString(): string 
    { 
        return match ($this->key) { 
            null => $this->job, 
            default => "{$this->job}:{$this->key}", 
        }; 
    } 
 
    public function job(): string 
    { 
        return $this->job; 
    } 
 
    public function key(): ?string 
    { 
        return $this->key; 
    } 
 
    private function assertArgument(string $argument, int $code): void 
    { 
        if (ctype_space($argument) || empty($argument)) { 
            throw new InvalidArgumentException(code: $code); 
        } 
    } 
} 
 
 |