mirror of
https://github.com/kubernetes-sigs/prometheus-adapter.git
synced 2026-04-06 01:38:10 +00:00
Travis seems to be having issues pulling deps, so we'll have to check in the vendor directory and prevent the makefile from trying to regenerate it normally.
81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
package swagger
|
|
|
|
import (
|
|
"reflect"
|
|
"strings"
|
|
)
|
|
|
|
func (prop *ModelProperty) setDescription(field reflect.StructField) {
|
|
if tag := field.Tag.Get("description"); tag != "" {
|
|
prop.Description = tag
|
|
}
|
|
}
|
|
|
|
func (prop *ModelProperty) setDefaultValue(field reflect.StructField) {
|
|
if tag := field.Tag.Get("default"); tag != "" {
|
|
prop.DefaultValue = Special(tag)
|
|
}
|
|
}
|
|
|
|
func (prop *ModelProperty) setEnumValues(field reflect.StructField) {
|
|
// We use | to separate the enum values. This value is chosen
|
|
// since its unlikely to be useful in actual enumeration values.
|
|
if tag := field.Tag.Get("enum"); tag != "" {
|
|
prop.Enum = strings.Split(tag, "|")
|
|
}
|
|
}
|
|
|
|
func (prop *ModelProperty) setMaximum(field reflect.StructField) {
|
|
if tag := field.Tag.Get("maximum"); tag != "" {
|
|
prop.Maximum = tag
|
|
}
|
|
}
|
|
|
|
func (prop *ModelProperty) setType(field reflect.StructField) {
|
|
if tag := field.Tag.Get("type"); tag != "" {
|
|
// Check if the first two characters of the type tag are
|
|
// intended to emulate slice/array behaviour.
|
|
//
|
|
// If type is intended to be a slice/array then add the
|
|
// overriden type to the array item instead of the main property
|
|
if len(tag) > 2 && tag[0:2] == "[]" {
|
|
pType := "array"
|
|
prop.Type = &pType
|
|
prop.Items = new(Item)
|
|
|
|
iType := tag[2:]
|
|
prop.Items.Type = &iType
|
|
return
|
|
}
|
|
|
|
prop.Type = &tag
|
|
}
|
|
}
|
|
|
|
func (prop *ModelProperty) setMinimum(field reflect.StructField) {
|
|
if tag := field.Tag.Get("minimum"); tag != "" {
|
|
prop.Minimum = tag
|
|
}
|
|
}
|
|
|
|
func (prop *ModelProperty) setUniqueItems(field reflect.StructField) {
|
|
tag := field.Tag.Get("unique")
|
|
switch tag {
|
|
case "true":
|
|
v := true
|
|
prop.UniqueItems = &v
|
|
case "false":
|
|
v := false
|
|
prop.UniqueItems = &v
|
|
}
|
|
}
|
|
|
|
func (prop *ModelProperty) setPropertyMetadata(field reflect.StructField) {
|
|
prop.setDescription(field)
|
|
prop.setEnumValues(field)
|
|
prop.setMinimum(field)
|
|
prop.setMaximum(field)
|
|
prop.setUniqueItems(field)
|
|
prop.setDefaultValue(field)
|
|
prop.setType(field)
|
|
}
|