|
|
@@ -6,11 +6,13 @@
|
|
|
package tailcfg
|
|
|
|
|
|
import (
|
|
|
- "encoding/json"
|
|
|
+ jsonv1 "encoding/json"
|
|
|
"errors"
|
|
|
"net/netip"
|
|
|
"time"
|
|
|
|
|
|
+ jsonv2 "github.com/go-json-experiment/json"
|
|
|
+ "github.com/go-json-experiment/json/jsontext"
|
|
|
"tailscale.com/types/dnstype"
|
|
|
"tailscale.com/types/key"
|
|
|
"tailscale.com/types/opt"
|
|
|
@@ -49,8 +51,17 @@ func (v UserView) AsStruct() *User {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v UserView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v UserView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v UserView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *UserView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -59,7 +70,20 @@ func (v *UserView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x User
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *UserView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x User
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -107,8 +131,17 @@ func (v NodeView) AsStruct() *Node {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v NodeView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v NodeView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v NodeView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *NodeView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -117,7 +150,20 @@ func (v *NodeView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x Node
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *NodeView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x Node
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -246,8 +292,17 @@ func (v HostinfoView) AsStruct() *Hostinfo {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v HostinfoView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v HostinfoView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v HostinfoView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *HostinfoView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -256,7 +311,20 @@ func (v *HostinfoView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x Hostinfo
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *HostinfoView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x Hostinfo
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -380,8 +448,17 @@ func (v NetInfoView) AsStruct() *NetInfo {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v NetInfoView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v NetInfoView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v NetInfoView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *NetInfoView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -390,7 +467,20 @@ func (v *NetInfoView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x NetInfo
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *NetInfoView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x NetInfo
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -460,8 +550,17 @@ func (v LoginView) AsStruct() *Login {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v LoginView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v LoginView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v LoginView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *LoginView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -470,7 +569,20 @@ func (v *LoginView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x Login
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *LoginView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x Login
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -521,8 +633,17 @@ func (v DNSConfigView) AsStruct() *DNSConfig {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v DNSConfigView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v DNSConfigView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v DNSConfigView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *DNSConfigView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -531,7 +652,20 @@ func (v *DNSConfigView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x DNSConfig
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *DNSConfigView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x DNSConfig
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -602,8 +736,17 @@ func (v RegisterResponseView) AsStruct() *RegisterResponse {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v RegisterResponseView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v RegisterResponseView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v RegisterResponseView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *RegisterResponseView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -612,7 +755,20 @@ func (v *RegisterResponseView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x RegisterResponse
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *RegisterResponseView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x RegisterResponse
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -668,8 +824,17 @@ func (v RegisterResponseAuthView) AsStruct() *RegisterResponseAuth {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v RegisterResponseAuthView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v RegisterResponseAuthView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v RegisterResponseAuthView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *RegisterResponseAuthView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -678,7 +843,20 @@ func (v *RegisterResponseAuthView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x RegisterResponseAuth
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *RegisterResponseAuthView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x RegisterResponseAuth
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -726,8 +904,17 @@ func (v RegisterRequestView) AsStruct() *RegisterRequest {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v RegisterRequestView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v RegisterRequestView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v RegisterRequestView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *RegisterRequestView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -736,7 +923,20 @@ func (v *RegisterRequestView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x RegisterRequest
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *RegisterRequestView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x RegisterRequest
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -816,8 +1016,17 @@ func (v DERPHomeParamsView) AsStruct() *DERPHomeParams {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v DERPHomeParamsView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v DERPHomeParamsView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v DERPHomeParamsView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *DERPHomeParamsView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -826,7 +1035,20 @@ func (v *DERPHomeParamsView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x DERPHomeParams
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *DERPHomeParamsView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x DERPHomeParams
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -870,8 +1092,17 @@ func (v DERPRegionView) AsStruct() *DERPRegion {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v DERPRegionView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v DERPRegionView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v DERPRegionView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *DERPRegionView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -880,7 +1111,20 @@ func (v *DERPRegionView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x DERPRegion
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *DERPRegionView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x DERPRegion
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -938,8 +1182,17 @@ func (v DERPMapView) AsStruct() *DERPMap {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v DERPMapView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v DERPMapView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v DERPMapView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *DERPMapView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -948,7 +1201,20 @@ func (v *DERPMapView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x DERPMap
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *DERPMapView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x DERPMap
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -999,8 +1265,17 @@ func (v DERPNodeView) AsStruct() *DERPNode {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v DERPNodeView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v DERPNodeView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v DERPNodeView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *DERPNodeView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -1009,7 +1284,20 @@ func (v *DERPNodeView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x DERPNode
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *DERPNodeView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x DERPNode
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -1073,8 +1361,17 @@ func (v SSHRuleView) AsStruct() *SSHRule {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v SSHRuleView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v SSHRuleView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v SSHRuleView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *SSHRuleView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -1083,7 +1380,20 @@ func (v *SSHRuleView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x SSHRule
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *SSHRuleView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x SSHRule
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -1139,8 +1449,17 @@ func (v SSHActionView) AsStruct() *SSHAction {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v SSHActionView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v SSHActionView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v SSHActionView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *SSHActionView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -1149,7 +1468,20 @@ func (v *SSHActionView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x SSHAction
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *SSHActionView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x SSHAction
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -1211,8 +1543,17 @@ func (v SSHPrincipalView) AsStruct() *SSHPrincipal {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v SSHPrincipalView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v SSHPrincipalView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v SSHPrincipalView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *SSHPrincipalView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -1221,7 +1562,20 @@ func (v *SSHPrincipalView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x SSHPrincipal
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *SSHPrincipalView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x SSHPrincipal
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -1273,8 +1627,17 @@ func (v ControlDialPlanView) AsStruct() *ControlDialPlan {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v ControlDialPlanView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v ControlDialPlanView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v ControlDialPlanView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *ControlDialPlanView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -1283,7 +1646,20 @@ func (v *ControlDialPlanView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x ControlDialPlan
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *ControlDialPlanView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x ControlDialPlan
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -1327,8 +1703,17 @@ func (v LocationView) AsStruct() *Location {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v LocationView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v LocationView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v LocationView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *LocationView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -1337,7 +1722,20 @@ func (v *LocationView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x Location
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *LocationView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x Location
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -1391,8 +1789,17 @@ func (v UserProfileView) AsStruct() *UserProfile {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v UserProfileView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v UserProfileView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v UserProfileView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *UserProfileView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -1401,7 +1808,20 @@ func (v *UserProfileView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x UserProfile
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *UserProfileView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x UserProfile
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|
|
|
@@ -1450,8 +1870,17 @@ func (v VIPServiceView) AsStruct() *VIPService {
|
|
|
return v.ж.Clone()
|
|
|
}
|
|
|
|
|
|
-func (v VIPServiceView) MarshalJSON() ([]byte, error) { return json.Marshal(v.ж) }
|
|
|
+// MarshalJSON implements [jsonv1.Marshaler].
|
|
|
+func (v VIPServiceView) MarshalJSON() ([]byte, error) {
|
|
|
+ return jsonv1.Marshal(v.ж)
|
|
|
+}
|
|
|
+
|
|
|
+// MarshalJSONTo implements [jsonv2.MarshalerTo].
|
|
|
+func (v VIPServiceView) MarshalJSONTo(enc *jsontext.Encoder) error {
|
|
|
+ return jsonv2.MarshalEncode(enc, v.ж)
|
|
|
+}
|
|
|
|
|
|
+// UnmarshalJSON implements [jsonv1.Unmarshaler].
|
|
|
func (v *VIPServiceView) UnmarshalJSON(b []byte) error {
|
|
|
if v.ж != nil {
|
|
|
return errors.New("already initialized")
|
|
|
@@ -1460,7 +1889,20 @@ func (v *VIPServiceView) UnmarshalJSON(b []byte) error {
|
|
|
return nil
|
|
|
}
|
|
|
var x VIPService
|
|
|
- if err := json.Unmarshal(b, &x); err != nil {
|
|
|
+ if err := jsonv1.Unmarshal(b, &x); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ v.ж = &x
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UnmarshalJSONFrom implements [jsonv2.UnmarshalerFrom].
|
|
|
+func (v *VIPServiceView) UnmarshalJSONFrom(dec *jsontext.Decoder) error {
|
|
|
+ if v.ж != nil {
|
|
|
+ return errors.New("already initialized")
|
|
|
+ }
|
|
|
+ var x VIPService
|
|
|
+ if err := jsonv2.UnmarshalDecode(dec, &x); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
v.ж = &x
|