@@ -33,6 +33,7 @@ import (
3333 "github.com/go-chi/chi/v5"
3434 "github.com/go-chi/chi/v5/middleware"
3535 "gomodules.xyz/sets"
36+ apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
3637 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3738 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
3839 "k8s.io/apimachinery/pkg/runtime"
@@ -78,6 +79,7 @@ func NewOptions(apigroups ...string) *Options {
7879 )
7980
8081 utilruntime .Must (clientgoscheme .AddToScheme (scheme ))
82+ utilruntime .Must (apiextensionsv1 .AddToScheme (scheme ))
8183 metav1 .AddToGroupVersion (scheme , metav1 .SchemeGroupVersion )
8284
8385 // TODO: keep the generic API server from wanting this
@@ -174,7 +176,7 @@ func (s *Server) Register(m chi.Router) {
174176}
175177
176178func (s * Server ) encoder (w http.ResponseWriter , r * http.Request ) runtime.Encoder {
177- outputMediaType , _ , err := negotiation .NegotiateOutputMediaType (r , s .opts .NegotiatedSerializer , negotiation .DefaultEndpointRestrictions )
179+ outputMediaType , _ , err := negotiation .NegotiateOutputMediaType (r , OutputSerializer { delegate : s .opts .NegotiatedSerializer } , negotiation .DefaultEndpointRestrictions )
178180 if err != nil {
179181 panic (err )
180182 }
@@ -351,3 +353,28 @@ func atoi(s string) int {
351353 i , _ := strconv .Atoi (s )
352354 return i
353355}
356+
357+ type OutputSerializer struct {
358+ delegate runtime.NegotiatedSerializer
359+ }
360+
361+ var _ runtime.NegotiatedSerializer = & OutputSerializer {}
362+
363+ func (o OutputSerializer ) SupportedMediaTypes () []runtime.SerializerInfo {
364+ a := o .delegate .SupportedMediaTypes ()
365+ b := a [:0 ]
366+ for _ , x := range a {
367+ if x .MediaType != runtime .ContentTypeProtobuf {
368+ b = append (b , x )
369+ }
370+ }
371+ return b
372+ }
373+
374+ func (o OutputSerializer ) EncoderForVersion (serializer runtime.Encoder , gv runtime.GroupVersioner ) runtime.Encoder {
375+ return o .delegate .EncoderForVersion (serializer , gv )
376+ }
377+
378+ func (o OutputSerializer ) DecoderToVersion (serializer runtime.Decoder , gv runtime.GroupVersioner ) runtime.Decoder {
379+ return o .delegate .DecoderToVersion (serializer , gv )
380+ }
0 commit comments