| 36 | type dynamicCodec struct{} |
| 37 | |
| 38 | func (dynamicCodec) Decode(data []byte, gvk *schema.GroupVersionKind, obj runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { |
| 39 | obj, gvk, err := unstructured.UnstructuredJSONScheme.Decode(data, gvk, obj) |
| 40 | if err != nil { |
| 41 | return nil, nil, err |
| 42 | } |
| 43 | |
| 44 | if _, ok := obj.(*metav1.Status); !ok && strings.ToLower(gvk.Kind) == "status" { |
| 45 | obj = &metav1.Status{} |
| 46 | err := json.Unmarshal(data, obj) |
| 47 | if err != nil { |
| 48 | return nil, nil, err |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | return obj, gvk, nil |
| 53 | } |
| 54 | |
| 55 | func (dynamicCodec) Encode(obj runtime.Object, w io.Writer) error { |
| 56 | return unstructured.UnstructuredJSONScheme.Encode(obj, w) |