Skip to content

Commit

Permalink
feat getkin#482: add support for int32 and int64 integer formats
Browse files Browse the repository at this point in the history
  • Loading branch information
Christian Boitel committed Aug 1, 2022
1 parent fd4bae8 commit 989e7bb
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions openapi3/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ const (
TypeNumber = "number"
TypeObject = "object"
TypeString = "string"

// constants for integer formats
formatMinInt = float64(math.MinInt)
formatMaxInt = float64(math.MaxInt)
formatMinInt32 = float64(math.MinInt32)
formatMaxInt32 = float64(math.MaxInt32)
formatMinInt64 = float64(math.MinInt64)
formatMaxInt64 = float64(math.MaxInt64)
)

var (
Expand Down Expand Up @@ -1039,6 +1047,35 @@ func (schema *Schema) visitJSONNumber(settings *schemaValidationSettings, value
return schema.expectedType(settings, "number, integer")
}

// formats
if schema.Format != "" {
formatMin := formatMinInt
formatMax := formatMaxInt
switch schema.Format {
case "int32":
formatMin = formatMinInt32
formatMax = formatMaxInt32
case "int64":
formatMin = formatMinInt64
formatMax = formatMaxInt64
}
if !(value >= formatMin) || !(value <= formatMax) {
if settings.failfast {
return errSchema
}
err := &SchemaError{
Value: value,
Schema: schema,
SchemaField: "format",
Reason: fmt.Sprintf("number must be a %s", schema.Format),
}
if !settings.multiError {
return err
}
me = append(me, err)
}
}

// "exclusiveMinimum"
if v := schema.ExclusiveMin; v && !(*schema.Min < value) {
if settings.failfast {
Expand Down

0 comments on commit 989e7bb

Please sign in to comment.