Exemplo n.º 1
0
        private bool ValidateNumber(JSchema schema, object value)
        {
            if (JSchemaTypeHelpers.HasFlag(schema.Type, JSchemaType.Integer) &&
                !JSchemaTypeHelpers.HasFlag(schema.Type, JSchemaType.Number) &&
                MathHelpers.IsDoubleMultiple(value, 1) &&
                SchemaVersionHelpers.EnsureVersion(Context.Validator.SchemaVersion, SchemaVersion.Draft6))
            {
                // accept values like 1.0 in draft6+
            }
            else if (!TestType(schema, JSchemaType.Number, value))
            {
                return(false);
            }

            if (schema.Maximum != null)
            {
                double d = Convert.ToDouble(value, CultureInfo.InvariantCulture);

                if (d > schema.Maximum)
                {
                    RaiseError($"Float {JsonConvert.ToString(value)} exceeds maximum value of {schema.Maximum}.", ErrorType.Maximum, schema, value, null);
                }
                if (schema.ExclusiveMaximum && d == schema.Maximum)
                {
                    RaiseError($"Float {JsonConvert.ToString(value)} equals maximum value of {schema.Maximum} and exclusive maximum is true.", ErrorType.Maximum, schema, value, null);
                }
            }

            if (schema.Minimum != null)
            {
                double d = Convert.ToDouble(value, CultureInfo.InvariantCulture);

                if (d < schema.Minimum)
                {
                    RaiseError($"Float {JsonConvert.ToString(value)} is less than minimum value of {schema.Minimum}.", ErrorType.Minimum, schema, value, null);
                }
                if (schema.ExclusiveMinimum && d == schema.Minimum)
                {
                    RaiseError($"Float {JsonConvert.ToString(value)} equals minimum value of {schema.Minimum} and exclusive minimum is true.", ErrorType.Minimum, schema, value, null);
                }
            }

            if (schema.MultipleOf != null)
            {
                bool isMultiple = MathHelpers.IsDoubleMultiple(value, schema.MultipleOf.Value);

                if (!isMultiple)
                {
                    RaiseError($"Float {JsonConvert.ToString(value)} is not a multiple of {schema.MultipleOf}.", ErrorType.MultipleOf, schema, value, null);
                }
            }

            return(true);
        }
Exemplo n.º 2
0
        private Uri GetSchemaUri(string version)
        {
            SchemaVersion schemaVersion = (SchemaVersion)Enum.Parse(typeof(SchemaVersion), version.Replace('-', '_'));

            return(SchemaVersionHelpers.MapSchemaVersion(schemaVersion));
        }