/
serializer.go
37 lines (31 loc) · 1.02 KB
/
serializer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package api
import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
)
type subsetNegotiatedSerializer struct {
accepts []func(info runtime.SerializerInfo) bool
runtime.NegotiatedSerializer
}
func (s subsetNegotiatedSerializer) SupportedMediaTypes() []runtime.SerializerInfo {
base := s.NegotiatedSerializer.SupportedMediaTypes()
var filtered []runtime.SerializerInfo
for _, info := range base {
for _, accept := range s.accepts {
if accept(info) {
filtered = append(filtered, info)
break
}
}
}
return filtered
}
func NoProtobuf(info runtime.SerializerInfo) bool {
return info.MediaType != runtime.ContentTypeProtobuf
}
func SubsetNegotiatedSerializer(codecs serializer.CodecFactory, accepts ...func(info runtime.SerializerInfo) bool) runtime.NegotiatedSerializer {
return subsetNegotiatedSerializer{accepts, codecs}
}
func DefaultSubsetNegotiatedSerializer(codecs serializer.CodecFactory) runtime.NegotiatedSerializer {
return SubsetNegotiatedSerializer(codecs, NoProtobuf)
}