123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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)
- }
|