diff --git a/src/Validators/PostValidator.php b/src/Validators/PostValidator.php new file mode 100644 index 0000000..fc38e22 --- /dev/null +++ b/src/Validators/PostValidator.php @@ -0,0 +1,66 @@ + + * + * @author Peter Lai + * @license MIT + */ + +namespace Web3\Validators; + +use Web3\Validators\IValidator; +use Web3\Validators\QuantityValidator; +use Web3\Validators\HexValidator; +use Web3\Validators\IdentityValidator; + +class PostValidator +{ + /** + * validate + * + * @param array $value + * @return bool + */ + public static function validate($value) + { + if (!is_array($value)) { + return false; + } + if (isset($value['from']) && IdentityValidator::validate($value['from']) === false) { + return false; + } + if (isset($value['to']) && IdentityValidator::validate($value['to']) === false) { + return false; + } + if (!isset($value['topics']) || !is_array($value['topics'])) { + return false; + } + foreach ($value['topics'] as $topic) { + if (IdentityValidator::validate($topic) === false) { + return false; + } + } + if (!isset($value['payload'])) { + return false; + } + if (HexValidator::validate($value['payload']) === false) { + return false; + } + if (!isset($value['priority'])) { + return false; + } + if (QuantityValidator::validate($value['priority']) === false) { + return false; + } + if (!isset($value['ttl'])) { + return false; + } + if (isset($value['ttl']) && QuantityValidator::validate($value['ttl']) === false) { + return false; + } + return true; + } +} \ No newline at end of file