Skip to content

Commit 4cb78ee

Browse files
authored
Define const schema types (#438)
1 parent d5022c7 commit 4cb78ee

File tree

1 file changed

+35
-26
lines changed

1 file changed

+35
-26
lines changed

openapi3/schema.go

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,15 @@ import (
1616
"github.com/go-openapi/jsonpointer"
1717
)
1818

19+
const (
20+
TypeArray = "array"
21+
TypeBoolean = "boolean"
22+
TypeInteger = "integer"
23+
TypeNumber = "number"
24+
TypeObject = "object"
25+
TypeString = "string"
26+
)
27+
1928
var (
2029
// SchemaErrorDetailsDisabled disables printing of details about schema errors.
2130
SchemaErrorDetailsDisabled = false
@@ -297,72 +306,72 @@ func NewAllOfSchema(schemas ...*Schema) *Schema {
297306

298307
func NewBoolSchema() *Schema {
299308
return &Schema{
300-
Type: "boolean",
309+
Type: TypeBoolean,
301310
}
302311
}
303312

304313
func NewFloat64Schema() *Schema {
305314
return &Schema{
306-
Type: "number",
315+
Type: TypeNumber,
307316
}
308317
}
309318

310319
func NewIntegerSchema() *Schema {
311320
return &Schema{
312-
Type: "integer",
321+
Type: TypeInteger,
313322
}
314323
}
315324

316325
func NewInt32Schema() *Schema {
317326
return &Schema{
318-
Type: "integer",
327+
Type: TypeInteger,
319328
Format: "int32",
320329
}
321330
}
322331

323332
func NewInt64Schema() *Schema {
324333
return &Schema{
325-
Type: "integer",
334+
Type: TypeInteger,
326335
Format: "int64",
327336
}
328337
}
329338

330339
func NewStringSchema() *Schema {
331340
return &Schema{
332-
Type: "string",
341+
Type: TypeString,
333342
}
334343
}
335344

336345
func NewDateTimeSchema() *Schema {
337346
return &Schema{
338-
Type: "string",
347+
Type: TypeString,
339348
Format: "date-time",
340349
}
341350
}
342351

343352
func NewUUIDSchema() *Schema {
344353
return &Schema{
345-
Type: "string",
354+
Type: TypeString,
346355
Format: "uuid",
347356
}
348357
}
349358

350359
func NewBytesSchema() *Schema {
351360
return &Schema{
352-
Type: "string",
361+
Type: TypeString,
353362
Format: "byte",
354363
}
355364
}
356365

357366
func NewArraySchema() *Schema {
358367
return &Schema{
359-
Type: "array",
368+
Type: TypeArray,
360369
}
361370
}
362371

363372
func NewObjectSchema() *Schema {
364373
return &Schema{
365-
Type: "object",
374+
Type: TypeObject,
366375
Properties: make(map[string]*SchemaRef),
367376
}
368377
}
@@ -637,8 +646,8 @@ func (schema *Schema) validate(ctx context.Context, stack []*Schema) (err error)
637646
schemaType := schema.Type
638647
switch schemaType {
639648
case "":
640-
case "boolean":
641-
case "number":
649+
case TypeBoolean:
650+
case TypeNumber:
642651
if format := schema.Format; len(format) > 0 {
643652
switch format {
644653
case "float", "double":
@@ -648,7 +657,7 @@ func (schema *Schema) validate(ctx context.Context, stack []*Schema) (err error)
648657
}
649658
}
650659
}
651-
case "integer":
660+
case TypeInteger:
652661
if format := schema.Format; len(format) > 0 {
653662
switch format {
654663
case "int32", "int64":
@@ -658,7 +667,7 @@ func (schema *Schema) validate(ctx context.Context, stack []*Schema) (err error)
658667
}
659668
}
660669
}
661-
case "string":
670+
case TypeString:
662671
if format := schema.Format; len(format) > 0 {
663672
switch format {
664673
// Supported by OpenAPIv3.0.1:
@@ -681,11 +690,11 @@ func (schema *Schema) validate(ctx context.Context, stack []*Schema) (err error)
681690
return err
682691
}
683692
}
684-
case "array":
693+
case TypeArray:
685694
if schema.Items == nil {
686695
return errors.New("when schema type is 'array', schema 'items' must be non-null")
687696
}
688-
case "object":
697+
case TypeObject:
689698
default:
690699
return fmt.Errorf("unsupported 'type' value %q", schemaType)
691700
}
@@ -966,8 +975,8 @@ func (schema *Schema) VisitJSONBoolean(value bool) error {
966975
}
967976

968977
func (schema *Schema) visitJSONBoolean(settings *schemaValidationSettings, value bool) (err error) {
969-
if schemaType := schema.Type; schemaType != "" && schemaType != "boolean" {
970-
return schema.expectedType(settings, "boolean")
978+
if schemaType := schema.Type; schemaType != "" && schemaType != TypeBoolean {
979+
return schema.expectedType(settings, TypeBoolean)
971980
}
972981
return
973982
}
@@ -996,7 +1005,7 @@ func (schema *Schema) visitJSONNumber(settings *schemaValidationSettings, value
9961005
}
9971006
me = append(me, err)
9981007
}
999-
} else if schemaType != "" && schemaType != "number" {
1008+
} else if schemaType != "" && schemaType != TypeNumber {
10001009
return schema.expectedType(settings, "number, integer")
10011010
}
10021011

@@ -1101,8 +1110,8 @@ func (schema *Schema) VisitJSONString(value string) error {
11011110
}
11021111

11031112
func (schema *Schema) visitJSONString(settings *schemaValidationSettings, value string) error {
1104-
if schemaType := schema.Type; schemaType != "" && schemaType != "string" {
1105-
return schema.expectedType(settings, "string")
1113+
if schemaType := schema.Type; schemaType != "" && schemaType != TypeString {
1114+
return schema.expectedType(settings, TypeString)
11061115
}
11071116

11081117
var me MultiError
@@ -1220,8 +1229,8 @@ func (schema *Schema) VisitJSONArray(value []interface{}) error {
12201229
}
12211230

12221231
func (schema *Schema) visitJSONArray(settings *schemaValidationSettings, value []interface{}) error {
1223-
if schemaType := schema.Type; schemaType != "" && schemaType != "array" {
1224-
return schema.expectedType(settings, "array")
1232+
if schemaType := schema.Type; schemaType != "" && schemaType != TypeArray {
1233+
return schema.expectedType(settings, TypeArray)
12251234
}
12261235

12271236
var me MultiError
@@ -1316,8 +1325,8 @@ func (schema *Schema) VisitJSONObject(value map[string]interface{}) error {
13161325
}
13171326

13181327
func (schema *Schema) visitJSONObject(settings *schemaValidationSettings, value map[string]interface{}) error {
1319-
if schemaType := schema.Type; schemaType != "" && schemaType != "object" {
1320-
return schema.expectedType(settings, "object")
1328+
if schemaType := schema.Type; schemaType != "" && schemaType != TypeObject {
1329+
return schema.expectedType(settings, TypeObject)
13211330
}
13221331

13231332
var me MultiError

0 commit comments

Comments
 (0)