refactor: message object properties
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: Sebastian Krupinski <krupinski01@gmail.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace KTXF\Mail\Submission;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use JsonSerializable;
|
||||
use KTXF\Resource\Identifier\EntityIdentifier;
|
||||
|
||||
/**
|
||||
* Entity Submit Result
|
||||
*
|
||||
* Normalized result for outbound submission.
|
||||
*
|
||||
* @since 2026.06.07
|
||||
*/
|
||||
final class EntitySubmitResult implements JsonSerializable {
|
||||
|
||||
public const DISPOSITION_SENT = 'sent';
|
||||
public const DISPOSITION_ERROR = 'error';
|
||||
|
||||
public function __construct(
|
||||
public readonly string $disposition,
|
||||
public readonly ?string $transportId = null,
|
||||
public readonly ?EntityIdentifier $sourceDraft = null,
|
||||
public readonly ?EntityIdentifier $sentEntity = null,
|
||||
public readonly ?string $errorCode = null,
|
||||
public readonly ?string $errorMessage = null,
|
||||
) {
|
||||
if (!in_array($this->disposition, [self::DISPOSITION_SENT, self::DISPOSITION_ERROR], true)) {
|
||||
throw new InvalidArgumentException('Invalid submission disposition: ' . $this->disposition);
|
||||
}
|
||||
}
|
||||
|
||||
public function jsonSerialize(): array {
|
||||
return array_filter([
|
||||
'disposition' => $this->disposition,
|
||||
'transportId' => $this->transportId,
|
||||
'sourceDraft' => $this->sourceDraft !== null ? (string)$this->sourceDraft : null,
|
||||
'sentEntity' => $this->sentEntity !== null ? (string)$this->sentEntity : null,
|
||||
'errorCode' => $this->errorCode,
|
||||
'errorMessage' => $this->errorMessage,
|
||||
], static fn(mixed $value): bool => $value !== null);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user