JSONSchema: verify comma-separated property strings
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Tue, 22 Sep 2015 11:45:42 +0000 (13:45 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 23 Sep 2015 06:08:43 +0000 (08:08 +0200)
src/PVE/JSONSchema.pm

index d900a69..0d68608 100644 (file)
@@ -396,8 +396,9 @@ PVE::JSONSchema::register_standard_option('pve-startup-order', {
 });
 
 sub check_format {
-    my ($format, $value) = @_;
+    my ($format, $value, $path) = @_;
 
+    return parse_property_string($format, $value, $path) if ref($format) eq 'HASH';
     return if $format eq 'regex';
 
     if ($format =~ m/^(.*)-a?list$/) {
@@ -427,6 +428,7 @@ sub check_format {
 
        die "undefined format '$format'\n" if !$code;
 
+       return parse_property_string($code, $value, $path) if ref($code) eq 'HASH';
        &$code($value);
     }
 } 
@@ -728,7 +730,7 @@ sub check_prop {
     } else {
 
        if (my $format = $schema->{format}) {
-           eval { check_format($format, $value); };
+           eval { check_format($format, $value, $path); };
            if ($@) {
                add_error($errors, $path, "invalid format - $@");
                return;
@@ -915,7 +917,7 @@ my $default_schema_noref = {
            description => "indicates a required property or a schema that must be validated if this property is present",
         },
         format => {
-           type => "string",
+           type => [ "string", "object" ],
            optional => 1,
            description => "This indicates what format the data is among some predefined formats which may include:\n\ndate - a string following the ISO format \naddress \nschema - a schema definition object \nperson \npage \nhtml - a string representing HTML",
         },