mirror of
https://github.com/yannh/kubeconform.git
synced 2026-02-12 06:29:23 +00:00
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package jsonschema
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
)
|
|
|
|
// Decoder specifies how to decode specific contentEncoding.
|
|
type Decoder struct {
|
|
// Name of contentEncoding.
|
|
Name string
|
|
// Decode given string to byte array.
|
|
Decode func(string) ([]byte, error)
|
|
}
|
|
|
|
var decoders = map[string]*Decoder{
|
|
"base64": {
|
|
Name: "base64",
|
|
Decode: func(s string) ([]byte, error) {
|
|
return base64.StdEncoding.DecodeString(s)
|
|
},
|
|
},
|
|
}
|
|
|
|
// MediaType specified how to validate bytes against specific contentMediaType.
|
|
type MediaType struct {
|
|
// Name of contentMediaType.
|
|
Name string
|
|
|
|
// Validate checks whether bytes conform to this mediatype.
|
|
Validate func([]byte) error
|
|
|
|
// UnmarshalJSON unmarshals bytes into json value.
|
|
// This must be nil if this mediatype is not compatible
|
|
// with json.
|
|
UnmarshalJSON func([]byte) (any, error)
|
|
}
|
|
|
|
var mediaTypes = map[string]*MediaType{
|
|
"application/json": {
|
|
Name: "application/json",
|
|
Validate: func(b []byte) error {
|
|
var v any
|
|
return json.Unmarshal(b, &v)
|
|
},
|
|
UnmarshalJSON: func(b []byte) (any, error) {
|
|
return UnmarshalJSON(bytes.NewReader(b))
|
|
},
|
|
},
|
|
}
|