generated from sv-tools/go-repo-template
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathvalidation_options.go
88 lines (75 loc) · 2.66 KB
/
validation_options.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package openapi
import "github.com/santhosh-tekuri/jsonschema/v6"
type validationOptions struct {
allowExtensionNameWithoutPrefix bool
allowRequestBodyForGet bool
allowRequestBodyForHead bool
allowRequestBodyForDelete bool
allowUndefinedTagsInOperation bool
allowUnusedComponents bool
doNotValidateExamples bool
doNotValidateDefaultValues bool
validateDataAsJSON bool
updateCompiler []func(*jsonschema.Compiler)
}
// ValidationOption is a type for validation options.
type ValidationOption func(*validationOptions)
// AllowExtensionNameWithoutPrefix is a validation option to allow extension name without `x-` prefix.
func AllowExtensionNameWithoutPrefix() ValidationOption {
return func(v *validationOptions) {
v.allowExtensionNameWithoutPrefix = true
}
}
// AllowRequestBodyForGet is a validation option to allow request body for GET operation.
func AllowRequestBodyForGet() ValidationOption {
return func(v *validationOptions) {
v.allowRequestBodyForGet = true
}
}
// AllowRequestBodyForHead is a validation option to allow request body for HEAD operation.
func AllowRequestBodyForHead() ValidationOption {
return func(v *validationOptions) {
v.allowRequestBodyForHead = true
}
}
// AllowRequestBodyForDelete is a validation option to allow request body for DELETE operation.
func AllowRequestBodyForDelete() ValidationOption {
return func(v *validationOptions) {
v.allowRequestBodyForDelete = true
}
}
// AllowUndefinedTagsInOperation is a validation option to allow undefined tags in operation.
func AllowUndefinedTagsInOperation() ValidationOption {
return func(v *validationOptions) {
v.allowUndefinedTagsInOperation = true
}
}
// AllowUnusedComponents is a validation option to allow unused components.
func AllowUnusedComponents() ValidationOption {
return func(v *validationOptions) {
v.allowUnusedComponents = true
}
}
// DoNotValidateExamples is a validation option to skip examples validation.
func DoNotValidateExamples() ValidationOption {
return func(v *validationOptions) {
v.doNotValidateExamples = true
}
}
// DoNotValidateDefaultValues is a validation option to skip default values validation.
func DoNotValidateDefaultValues() ValidationOption {
return func(v *validationOptions) {
v.doNotValidateDefaultValues = true
}
}
func ValidateStringDataAsJSON() ValidationOption {
return func(v *validationOptions) {
v.validateDataAsJSON = true
}
}
// UpdateCompiler is a type to modify the jsonschema.Compiler.
func UpdateCompiler(f func(*jsonschema.Compiler)) ValidationOption {
return func(v *validationOptions) {
v.updateCompiler = append(v.updateCompiler, f)
}
}