src/operations/PatchValidationTrait.php
<?php declare(strict_types=1);
namespace blancks\JsonPatch\operations;
use blancks\JsonPatch\exceptions\InvalidPatchFromException;
use blancks\JsonPatch\exceptions\InvalidPatchOperationException;
use blancks\JsonPatch\exceptions\InvalidPatchPathException;
use blancks\JsonPatch\exceptions\InvalidPatchValueException;
use blancks\JsonPatch\exceptions\MalformedPathException;
trait PatchValidationTrait
{
protected function assertValidOp(object $patch): void
{
if (!isset($patch->op)) {
throw new InvalidPatchOperationException('"op" is missing');
}
}
protected function assertValidPath(object $patch): void
{
if (!isset($patch->path)) {
throw new InvalidPatchPathException('"path" is missing');
}
$this->assertValidJsonPointer($patch->path);
}
protected function assertValidFrom(object $patch): void
{
if (!isset($patch->from)) {
throw new InvalidPatchFromException('"from" is missing');
}
$this->assertValidJsonPointer($patch->from);
}
protected function assertValidValue(object $patch): void
{
if (!property_exists($patch, 'value')) {
throw new InvalidPatchValueException('"value" is missing');
}
}
protected function assertValidJsonPointer(string $pointer): void
{
if (!$this->JsonPointerHandler->isValidPointer($pointer)) {
throw new MalformedPathException(sprintf('path "%s" is not a valid JSON Pointer', $pointer), $pointer);
}
}
}