53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
package codegen
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
const (
|
|
extPropGoType = "x-go-type"
|
|
extPropOmitEmpty = "x-omitempty"
|
|
extPropExtraTags = "x-oapi-codegen-extra-tags"
|
|
)
|
|
|
|
func extTypeName(extPropValue interface{}) (string, error) {
|
|
raw, ok := extPropValue.(json.RawMessage)
|
|
if !ok {
|
|
return "", fmt.Errorf("failed to convert type: %T", extPropValue)
|
|
}
|
|
var name string
|
|
if err := json.Unmarshal(raw, &name); err != nil {
|
|
return "", errors.Wrap(err, "failed to unmarshal json")
|
|
}
|
|
|
|
return name, nil
|
|
}
|
|
|
|
func extParseOmitEmpty(extPropValue interface{}) (bool, error) {
|
|
raw, ok := extPropValue.(json.RawMessage)
|
|
if !ok {
|
|
return false, fmt.Errorf("failed to convert type: %T", extPropValue)
|
|
}
|
|
|
|
var omitEmpty bool
|
|
if err := json.Unmarshal(raw, &omitEmpty); err != nil {
|
|
return false, errors.Wrap(err, "failed to unmarshal json")
|
|
}
|
|
|
|
return omitEmpty, nil
|
|
}
|
|
|
|
func extExtraTags(extPropValue interface{}) (map[string]string, error) {
|
|
raw, ok := extPropValue.(json.RawMessage)
|
|
if !ok {
|
|
return nil, fmt.Errorf("failed to convert type: %T", extPropValue)
|
|
}
|
|
var tags map[string]string
|
|
if err := json.Unmarshal(raw, &tags); err != nil {
|
|
return nil, errors.Wrap(err, "failed to unmarshal json")
|
|
}
|
|
return tags, nil
|
|
}
|