. */ namespace Plugin\ActivityPub\Util\Type\Validator; use Exception; use Plugin\ActivityPub\Util\Type\Core\Link; use Plugin\ActivityPub\Util\Type\Core\ObjectType; use Plugin\ActivityPub\Util\Type\Util; use Plugin\ActivityPub\Util\Type\ValidatorInterface; /** * \Plugin\ActivityPub\Util\Type\Validator\HrefValidator is a dedicated * validator for href attribute. */ class HrefValidator implements ValidatorInterface { /** * Validate href value * * @param mixed $value * @param mixed $container An object * * @throws Exception * * @return bool */ public function validate(mixed $value, mixed $container): bool { // Validate that container is a Link or an Object Util::subclassOf( $container, [Link::class, ObjectType::class], true ); // Must be a valid URL or a valid magnet link return Util::validateUrl($value) || Util::validateMagnet($value); } }