func init() { Scheme = runtime.NewScheme() if err := api.AddToScheme(Scheme); err != nil { // Programmer error, detect immediately panic(err) } if err := v1.AddToScheme(Scheme); err != nil { // Programmer error, detect immediately panic(err) } yamlSerializer := json.NewYAMLSerializer(json.DefaultMetaFactory, Scheme, Scheme) Codec = versioning.NewCodecForScheme( Scheme, yamlSerializer, yamlSerializer, unversioned.GroupVersion{Version: Version}, runtime.InternalGroupVersioner, ) }
func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory) []serializerType { jsonSerializer := json.NewSerializer(mf, scheme, scheme, false) jsonPrettySerializer := json.NewSerializer(mf, scheme, scheme, true) yamlSerializer := json.NewYAMLSerializer(mf, scheme, scheme) serializers := []serializerType{ { AcceptContentTypes: []string{"application/json"}, ContentType: "application/json", FileExtensions: []string{"json"}, EncodesAsText: true, Serializer: jsonSerializer, PrettySerializer: jsonPrettySerializer, AcceptStreamContentTypes: []string{"application/json", "application/json;stream=watch"}, StreamContentType: "application/json", Framer: json.Framer, StreamSerializer: jsonSerializer, }, { AcceptContentTypes: []string{"application/yaml"}, ContentType: "application/yaml", FileExtensions: []string{"yaml"}, EncodesAsText: true, Serializer: yamlSerializer, // TODO: requires runtime.RawExtension to properly distinguish when the nested content is // yaml, because the yaml encoder invokes MarshalJSON first //AcceptStreamContentTypes: []string{"application/yaml", "application/yaml;stream=watch"}, //StreamContentType: "application/yaml;stream=watch", //Framer: json.YAMLFramer, //StreamSerializer: yamlSerializer, }, } for _, fn := range serializerExtensions { if serializer, ok := fn(scheme); ok { serializers = append(serializers, serializer) } } return serializers }