debian-forge-composer/vendor/github.com/deepmap/oapi-codegen/pkg/codegen/extension.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
}