sdk/resourcemanager/peering/armpeering/models_serde.go (2,231 lines of code) (raw):

//go:build go1.18 // +build go1.18 // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. // Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. package armpeering import ( "encoding/json" "fmt" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "reflect" ) // MarshalJSON implements the json.Marshaller interface for type BandwidthOffer. func (b BandwidthOffer) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "offerName", b.OfferName) populate(objectMap, "valueInMbps", b.ValueInMbps) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BandwidthOffer. func (b *BandwidthOffer) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "offerName": err = unpopulate(val, "OfferName", &b.OfferName) delete(rawMsg, key) case "valueInMbps": err = unpopulate(val, "ValueInMbps", &b.ValueInMbps) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type BgpSession. func (b BgpSession) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "md5AuthenticationKey", b.MD5AuthenticationKey) populate(objectMap, "maxPrefixesAdvertisedV4", b.MaxPrefixesAdvertisedV4) populate(objectMap, "maxPrefixesAdvertisedV6", b.MaxPrefixesAdvertisedV6) populate(objectMap, "microsoftSessionIPv4Address", b.MicrosoftSessionIPv4Address) populate(objectMap, "microsoftSessionIPv6Address", b.MicrosoftSessionIPv6Address) populate(objectMap, "peerSessionIPv4Address", b.PeerSessionIPv4Address) populate(objectMap, "peerSessionIPv6Address", b.PeerSessionIPv6Address) populate(objectMap, "sessionPrefixV4", b.SessionPrefixV4) populate(objectMap, "sessionPrefixV6", b.SessionPrefixV6) populate(objectMap, "sessionStateV4", b.SessionStateV4) populate(objectMap, "sessionStateV6", b.SessionStateV6) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BgpSession. func (b *BgpSession) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "md5AuthenticationKey": err = unpopulate(val, "MD5AuthenticationKey", &b.MD5AuthenticationKey) delete(rawMsg, key) case "maxPrefixesAdvertisedV4": err = unpopulate(val, "MaxPrefixesAdvertisedV4", &b.MaxPrefixesAdvertisedV4) delete(rawMsg, key) case "maxPrefixesAdvertisedV6": err = unpopulate(val, "MaxPrefixesAdvertisedV6", &b.MaxPrefixesAdvertisedV6) delete(rawMsg, key) case "microsoftSessionIPv4Address": err = unpopulate(val, "MicrosoftSessionIPv4Address", &b.MicrosoftSessionIPv4Address) delete(rawMsg, key) case "microsoftSessionIPv6Address": err = unpopulate(val, "MicrosoftSessionIPv6Address", &b.MicrosoftSessionIPv6Address) delete(rawMsg, key) case "peerSessionIPv4Address": err = unpopulate(val, "PeerSessionIPv4Address", &b.PeerSessionIPv4Address) delete(rawMsg, key) case "peerSessionIPv6Address": err = unpopulate(val, "PeerSessionIPv6Address", &b.PeerSessionIPv6Address) delete(rawMsg, key) case "sessionPrefixV4": err = unpopulate(val, "SessionPrefixV4", &b.SessionPrefixV4) delete(rawMsg, key) case "sessionPrefixV6": err = unpopulate(val, "SessionPrefixV6", &b.SessionPrefixV6) delete(rawMsg, key) case "sessionStateV4": err = unpopulate(val, "SessionStateV4", &b.SessionStateV4) delete(rawMsg, key) case "sessionStateV6": err = unpopulate(val, "SessionStateV6", &b.SessionStateV6) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type CdnPeeringPrefix. func (c CdnPeeringPrefix) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", c.ID) populate(objectMap, "name", c.Name) populate(objectMap, "properties", c.Properties) populate(objectMap, "type", c.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type CdnPeeringPrefix. func (c *CdnPeeringPrefix) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &c.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &c.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &c.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &c.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type CdnPeeringPrefixListResult. func (c CdnPeeringPrefixListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", c.NextLink) populate(objectMap, "value", c.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type CdnPeeringPrefixListResult. func (c *CdnPeeringPrefixListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &c.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &c.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type CdnPeeringPrefixProperties. func (c CdnPeeringPrefixProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "azureRegion", c.AzureRegion) populate(objectMap, "azureService", c.AzureService) populate(objectMap, "bgpCommunity", c.BgpCommunity) populate(objectMap, "isPrimaryRegion", c.IsPrimaryRegion) populate(objectMap, "prefix", c.Prefix) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type CdnPeeringPrefixProperties. func (c *CdnPeeringPrefixProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "azureRegion": err = unpopulate(val, "AzureRegion", &c.AzureRegion) delete(rawMsg, key) case "azureService": err = unpopulate(val, "AzureService", &c.AzureService) delete(rawMsg, key) case "bgpCommunity": err = unpopulate(val, "BgpCommunity", &c.BgpCommunity) delete(rawMsg, key) case "isPrimaryRegion": err = unpopulate(val, "IsPrimaryRegion", &c.IsPrimaryRegion) delete(rawMsg, key) case "prefix": err = unpopulate(val, "Prefix", &c.Prefix) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type CheckServiceProviderAvailabilityInput. func (c CheckServiceProviderAvailabilityInput) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "peeringServiceLocation", c.PeeringServiceLocation) populate(objectMap, "peeringServiceProvider", c.PeeringServiceProvider) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type CheckServiceProviderAvailabilityInput. func (c *CheckServiceProviderAvailabilityInput) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "peeringServiceLocation": err = unpopulate(val, "PeeringServiceLocation", &c.PeeringServiceLocation) delete(rawMsg, key) case "peeringServiceProvider": err = unpopulate(val, "PeeringServiceProvider", &c.PeeringServiceProvider) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorTest. func (c ConnectionMonitorTest) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", c.ID) populate(objectMap, "name", c.Name) populate(objectMap, "properties", c.Properties) populate(objectMap, "type", c.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorTest. func (c *ConnectionMonitorTest) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &c.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &c.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &c.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &c.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorTestListResult. func (c ConnectionMonitorTestListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", c.NextLink) populate(objectMap, "value", c.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorTestListResult. func (c *ConnectionMonitorTestListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &c.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &c.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorTestProperties. func (c ConnectionMonitorTestProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "destination", c.Destination) populate(objectMap, "destinationPort", c.DestinationPort) populate(objectMap, "isTestSuccessful", c.IsTestSuccessful) populate(objectMap, "path", c.Path) populate(objectMap, "provisioningState", c.ProvisioningState) populate(objectMap, "sourceAgent", c.SourceAgent) populate(objectMap, "testFrequencyInSec", c.TestFrequencyInSec) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorTestProperties. func (c *ConnectionMonitorTestProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "destination": err = unpopulate(val, "Destination", &c.Destination) delete(rawMsg, key) case "destinationPort": err = unpopulate(val, "DestinationPort", &c.DestinationPort) delete(rawMsg, key) case "isTestSuccessful": err = unpopulate(val, "IsTestSuccessful", &c.IsTestSuccessful) delete(rawMsg, key) case "path": err = unpopulate(val, "Path", &c.Path) delete(rawMsg, key) case "provisioningState": err = unpopulate(val, "ProvisioningState", &c.ProvisioningState) delete(rawMsg, key) case "sourceAgent": err = unpopulate(val, "SourceAgent", &c.SourceAgent) delete(rawMsg, key) case "testFrequencyInSec": err = unpopulate(val, "TestFrequencyInSec", &c.TestFrequencyInSec) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ContactDetail. func (c ContactDetail) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "email", c.Email) populate(objectMap, "phone", c.Phone) populate(objectMap, "role", c.Role) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ContactDetail. func (c *ContactDetail) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "email": err = unpopulate(val, "Email", &c.Email) delete(rawMsg, key) case "phone": err = unpopulate(val, "Phone", &c.Phone) delete(rawMsg, key) case "role": err = unpopulate(val, "Role", &c.Role) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type DirectConnection. func (d DirectConnection) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "bandwidthInMbps", d.BandwidthInMbps) populate(objectMap, "bgpSession", d.BgpSession) populate(objectMap, "connectionIdentifier", d.ConnectionIdentifier) populate(objectMap, "connectionState", d.ConnectionState) populate(objectMap, "errorMessage", d.ErrorMessage) populate(objectMap, "microsoftTrackingId", d.MicrosoftTrackingID) populate(objectMap, "peeringDBFacilityId", d.PeeringDBFacilityID) populate(objectMap, "provisionedBandwidthInMbps", d.ProvisionedBandwidthInMbps) populate(objectMap, "sessionAddressProvider", d.SessionAddressProvider) populate(objectMap, "useForPeeringService", d.UseForPeeringService) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type DirectConnection. func (d *DirectConnection) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", d, err) } for key, val := range rawMsg { var err error switch key { case "bandwidthInMbps": err = unpopulate(val, "BandwidthInMbps", &d.BandwidthInMbps) delete(rawMsg, key) case "bgpSession": err = unpopulate(val, "BgpSession", &d.BgpSession) delete(rawMsg, key) case "connectionIdentifier": err = unpopulate(val, "ConnectionIdentifier", &d.ConnectionIdentifier) delete(rawMsg, key) case "connectionState": err = unpopulate(val, "ConnectionState", &d.ConnectionState) delete(rawMsg, key) case "errorMessage": err = unpopulate(val, "ErrorMessage", &d.ErrorMessage) delete(rawMsg, key) case "microsoftTrackingId": err = unpopulate(val, "MicrosoftTrackingID", &d.MicrosoftTrackingID) delete(rawMsg, key) case "peeringDBFacilityId": err = unpopulate(val, "PeeringDBFacilityID", &d.PeeringDBFacilityID) delete(rawMsg, key) case "provisionedBandwidthInMbps": err = unpopulate(val, "ProvisionedBandwidthInMbps", &d.ProvisionedBandwidthInMbps) delete(rawMsg, key) case "sessionAddressProvider": err = unpopulate(val, "SessionAddressProvider", &d.SessionAddressProvider) delete(rawMsg, key) case "useForPeeringService": err = unpopulate(val, "UseForPeeringService", &d.UseForPeeringService) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", d, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type DirectPeeringFacility. func (d DirectPeeringFacility) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "address", d.Address) populate(objectMap, "directPeeringType", d.DirectPeeringType) populate(objectMap, "peeringDBFacilityId", d.PeeringDBFacilityID) populate(objectMap, "peeringDBFacilityLink", d.PeeringDBFacilityLink) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type DirectPeeringFacility. func (d *DirectPeeringFacility) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", d, err) } for key, val := range rawMsg { var err error switch key { case "address": err = unpopulate(val, "Address", &d.Address) delete(rawMsg, key) case "directPeeringType": err = unpopulate(val, "DirectPeeringType", &d.DirectPeeringType) delete(rawMsg, key) case "peeringDBFacilityId": err = unpopulate(val, "PeeringDBFacilityID", &d.PeeringDBFacilityID) delete(rawMsg, key) case "peeringDBFacilityLink": err = unpopulate(val, "PeeringDBFacilityLink", &d.PeeringDBFacilityLink) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", d, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ErrorDetail. func (e ErrorDetail) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "code", e.Code) populate(objectMap, "message", e.Message) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ErrorDetail. func (e *ErrorDetail) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } for key, val := range rawMsg { var err error switch key { case "code": err = unpopulate(val, "Code", &e.Code) delete(rawMsg, key) case "message": err = unpopulate(val, "Message", &e.Message) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ErrorResponse. func (e ErrorResponse) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "error", e.Error) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ErrorResponse. func (e *ErrorResponse) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } for key, val := range rawMsg { var err error switch key { case "error": err = unpopulate(val, "Error", &e.Error) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ExchangeConnection. func (e ExchangeConnection) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "bgpSession", e.BgpSession) populate(objectMap, "connectionIdentifier", e.ConnectionIdentifier) populate(objectMap, "connectionState", e.ConnectionState) populate(objectMap, "errorMessage", e.ErrorMessage) populate(objectMap, "peeringDBFacilityId", e.PeeringDBFacilityID) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ExchangeConnection. func (e *ExchangeConnection) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } for key, val := range rawMsg { var err error switch key { case "bgpSession": err = unpopulate(val, "BgpSession", &e.BgpSession) delete(rawMsg, key) case "connectionIdentifier": err = unpopulate(val, "ConnectionIdentifier", &e.ConnectionIdentifier) delete(rawMsg, key) case "connectionState": err = unpopulate(val, "ConnectionState", &e.ConnectionState) delete(rawMsg, key) case "errorMessage": err = unpopulate(val, "ErrorMessage", &e.ErrorMessage) delete(rawMsg, key) case "peeringDBFacilityId": err = unpopulate(val, "PeeringDBFacilityID", &e.PeeringDBFacilityID) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ExchangePeeringFacility. func (e ExchangePeeringFacility) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "bandwidthInMbps", e.BandwidthInMbps) populate(objectMap, "exchangeName", e.ExchangeName) populate(objectMap, "facilityIPv4Prefix", e.FacilityIPv4Prefix) populate(objectMap, "facilityIPv6Prefix", e.FacilityIPv6Prefix) populate(objectMap, "microsoftIPv4Address", e.MicrosoftIPv4Address) populate(objectMap, "microsoftIPv6Address", e.MicrosoftIPv6Address) populate(objectMap, "peeringDBFacilityId", e.PeeringDBFacilityID) populate(objectMap, "peeringDBFacilityLink", e.PeeringDBFacilityLink) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ExchangePeeringFacility. func (e *ExchangePeeringFacility) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } for key, val := range rawMsg { var err error switch key { case "bandwidthInMbps": err = unpopulate(val, "BandwidthInMbps", &e.BandwidthInMbps) delete(rawMsg, key) case "exchangeName": err = unpopulate(val, "ExchangeName", &e.ExchangeName) delete(rawMsg, key) case "facilityIPv4Prefix": err = unpopulate(val, "FacilityIPv4Prefix", &e.FacilityIPv4Prefix) delete(rawMsg, key) case "facilityIPv6Prefix": err = unpopulate(val, "FacilityIPv6Prefix", &e.FacilityIPv6Prefix) delete(rawMsg, key) case "microsoftIPv4Address": err = unpopulate(val, "MicrosoftIPv4Address", &e.MicrosoftIPv4Address) delete(rawMsg, key) case "microsoftIPv6Address": err = unpopulate(val, "MicrosoftIPv6Address", &e.MicrosoftIPv6Address) delete(rawMsg, key) case "peeringDBFacilityId": err = unpopulate(val, "PeeringDBFacilityID", &e.PeeringDBFacilityID) delete(rawMsg, key) case "peeringDBFacilityLink": err = unpopulate(val, "PeeringDBFacilityLink", &e.PeeringDBFacilityLink) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ListResult. func (l ListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", l.NextLink) populate(objectMap, "value", l.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ListResult. func (l *ListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &l.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &l.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Location. func (l Location) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", l.ID) populate(objectMap, "kind", l.Kind) populate(objectMap, "name", l.Name) populate(objectMap, "properties", l.Properties) populate(objectMap, "type", l.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Location. func (l *Location) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &l.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &l.Kind) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &l.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &l.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &l.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LocationListResult. func (l LocationListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", l.NextLink) populate(objectMap, "value", l.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LocationListResult. func (l *LocationListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &l.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &l.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LocationProperties. func (l LocationProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "azureRegion", l.AzureRegion) populate(objectMap, "country", l.Country) populate(objectMap, "direct", l.Direct) populate(objectMap, "exchange", l.Exchange) populate(objectMap, "peeringLocation", l.PeeringLocation) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LocationProperties. func (l *LocationProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "azureRegion": err = unpopulate(val, "AzureRegion", &l.AzureRegion) delete(rawMsg, key) case "country": err = unpopulate(val, "Country", &l.Country) delete(rawMsg, key) case "direct": err = unpopulate(val, "Direct", &l.Direct) delete(rawMsg, key) case "exchange": err = unpopulate(val, "Exchange", &l.Exchange) delete(rawMsg, key) case "peeringLocation": err = unpopulate(val, "PeeringLocation", &l.PeeringLocation) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LocationPropertiesDirect. func (l LocationPropertiesDirect) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "bandwidthOffers", l.BandwidthOffers) populate(objectMap, "peeringFacilities", l.PeeringFacilities) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LocationPropertiesDirect. func (l *LocationPropertiesDirect) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "bandwidthOffers": err = unpopulate(val, "BandwidthOffers", &l.BandwidthOffers) delete(rawMsg, key) case "peeringFacilities": err = unpopulate(val, "PeeringFacilities", &l.PeeringFacilities) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LocationPropertiesExchange. func (l LocationPropertiesExchange) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "peeringFacilities", l.PeeringFacilities) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LocationPropertiesExchange. func (l *LocationPropertiesExchange) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "peeringFacilities": err = unpopulate(val, "PeeringFacilities", &l.PeeringFacilities) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LogAnalyticsWorkspaceProperties. func (l LogAnalyticsWorkspaceProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "connectedAgents", l.ConnectedAgents) populate(objectMap, "key", l.Key) populate(objectMap, "workspaceID", l.WorkspaceID) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LogAnalyticsWorkspaceProperties. func (l *LogAnalyticsWorkspaceProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "connectedAgents": err = unpopulate(val, "ConnectedAgents", &l.ConnectedAgents) delete(rawMsg, key) case "key": err = unpopulate(val, "Key", &l.Key) delete(rawMsg, key) case "workspaceID": err = unpopulate(val, "WorkspaceID", &l.WorkspaceID) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LookingGlassOutput. func (l LookingGlassOutput) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "command", l.Command) populate(objectMap, "output", l.Output) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LookingGlassOutput. func (l *LookingGlassOutput) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "command": err = unpopulate(val, "Command", &l.Command) delete(rawMsg, key) case "output": err = unpopulate(val, "Output", &l.Output) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type MetricDimension. func (m MetricDimension) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "displayName", m.DisplayName) populate(objectMap, "name", m.Name) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type MetricDimension. func (m *MetricDimension) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "displayName": err = unpopulate(val, "DisplayName", &m.DisplayName) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &m.Name) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type MetricSpecification. func (m MetricSpecification) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "aggregationType", m.AggregationType) populate(objectMap, "dimensions", m.Dimensions) populate(objectMap, "displayDescription", m.DisplayDescription) populate(objectMap, "displayName", m.DisplayName) populate(objectMap, "name", m.Name) populate(objectMap, "supportedTimeGrainTypes", m.SupportedTimeGrainTypes) populate(objectMap, "unit", m.Unit) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type MetricSpecification. func (m *MetricSpecification) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "aggregationType": err = unpopulate(val, "AggregationType", &m.AggregationType) delete(rawMsg, key) case "dimensions": err = unpopulate(val, "Dimensions", &m.Dimensions) delete(rawMsg, key) case "displayDescription": err = unpopulate(val, "DisplayDescription", &m.DisplayDescription) delete(rawMsg, key) case "displayName": err = unpopulate(val, "DisplayName", &m.DisplayName) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &m.Name) delete(rawMsg, key) case "supportedTimeGrainTypes": err = unpopulate(val, "SupportedTimeGrainTypes", &m.SupportedTimeGrainTypes) delete(rawMsg, key) case "unit": err = unpopulate(val, "Unit", &m.Unit) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Operation. func (o Operation) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "display", o.Display) populate(objectMap, "isDataAction", o.IsDataAction) populate(objectMap, "name", o.Name) populate(objectMap, "properties", o.Properties) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Operation. func (o *Operation) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } for key, val := range rawMsg { var err error switch key { case "display": err = unpopulate(val, "Display", &o.Display) delete(rawMsg, key) case "isDataAction": err = unpopulate(val, "IsDataAction", &o.IsDataAction) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &o.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &o.Properties) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type OperationDisplayInfo. func (o OperationDisplayInfo) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "description", o.Description) populate(objectMap, "operation", o.Operation) populate(objectMap, "provider", o.Provider) populate(objectMap, "resource", o.Resource) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type OperationDisplayInfo. func (o *OperationDisplayInfo) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } for key, val := range rawMsg { var err error switch key { case "description": err = unpopulate(val, "Description", &o.Description) delete(rawMsg, key) case "operation": err = unpopulate(val, "Operation", &o.Operation) delete(rawMsg, key) case "provider": err = unpopulate(val, "Provider", &o.Provider) delete(rawMsg, key) case "resource": err = unpopulate(val, "Resource", &o.Resource) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type OperationListResult. func (o OperationListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", o.NextLink) populate(objectMap, "value", o.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type OperationListResult. func (o *OperationListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &o.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &o.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type OperationProperties. func (o OperationProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "serviceSpecification", o.ServiceSpecification) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type OperationProperties. func (o *OperationProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } for key, val := range rawMsg { var err error switch key { case "serviceSpecification": err = unpopulate(val, "ServiceSpecification", &o.ServiceSpecification) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type PeerAsn. func (p PeerAsn) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", p.ID) populate(objectMap, "name", p.Name) populate(objectMap, "properties", p.Properties) populate(objectMap, "type", p.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type PeerAsn. func (p *PeerAsn) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &p.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &p.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &p.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &p.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type PeerAsnListResult. func (p PeerAsnListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", p.NextLink) populate(objectMap, "value", p.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type PeerAsnListResult. func (p *PeerAsnListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &p.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &p.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type PeerAsnProperties. func (p PeerAsnProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "errorMessage", p.ErrorMessage) populate(objectMap, "peerAsn", p.PeerAsn) populate(objectMap, "peerContactDetail", p.PeerContactDetail) populate(objectMap, "peerName", p.PeerName) populate(objectMap, "validationState", p.ValidationState) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type PeerAsnProperties. func (p *PeerAsnProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "errorMessage": err = unpopulate(val, "ErrorMessage", &p.ErrorMessage) delete(rawMsg, key) case "peerAsn": err = unpopulate(val, "PeerAsn", &p.PeerAsn) delete(rawMsg, key) case "peerContactDetail": err = unpopulate(val, "PeerContactDetail", &p.PeerContactDetail) delete(rawMsg, key) case "peerName": err = unpopulate(val, "PeerName", &p.PeerName) delete(rawMsg, key) case "validationState": err = unpopulate(val, "ValidationState", &p.ValidationState) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Peering. func (p Peering) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", p.ID) populate(objectMap, "kind", p.Kind) populate(objectMap, "location", p.Location) populate(objectMap, "name", p.Name) populate(objectMap, "properties", p.Properties) populate(objectMap, "sku", p.SKU) populate(objectMap, "tags", p.Tags) populate(objectMap, "type", p.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Peering. func (p *Peering) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &p.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &p.Kind) delete(rawMsg, key) case "location": err = unpopulate(val, "Location", &p.Location) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &p.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &p.Properties) delete(rawMsg, key) case "sku": err = unpopulate(val, "SKU", &p.SKU) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &p.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &p.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Properties. func (p Properties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "direct", p.Direct) populate(objectMap, "exchange", p.Exchange) populate(objectMap, "peeringLocation", p.PeeringLocation) populate(objectMap, "provisioningState", p.ProvisioningState) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Properties. func (p *Properties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "direct": err = unpopulate(val, "Direct", &p.Direct) delete(rawMsg, key) case "exchange": err = unpopulate(val, "Exchange", &p.Exchange) delete(rawMsg, key) case "peeringLocation": err = unpopulate(val, "PeeringLocation", &p.PeeringLocation) delete(rawMsg, key) case "provisioningState": err = unpopulate(val, "ProvisioningState", &p.ProvisioningState) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type PropertiesDirect. func (p PropertiesDirect) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "connections", p.Connections) populate(objectMap, "directPeeringType", p.DirectPeeringType) populate(objectMap, "peerAsn", p.PeerAsn) populate(objectMap, "useForPeeringService", p.UseForPeeringService) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type PropertiesDirect. func (p *PropertiesDirect) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "connections": err = unpopulate(val, "Connections", &p.Connections) delete(rawMsg, key) case "directPeeringType": err = unpopulate(val, "DirectPeeringType", &p.DirectPeeringType) delete(rawMsg, key) case "peerAsn": err = unpopulate(val, "PeerAsn", &p.PeerAsn) delete(rawMsg, key) case "useForPeeringService": err = unpopulate(val, "UseForPeeringService", &p.UseForPeeringService) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type PropertiesExchange. func (p PropertiesExchange) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "connections", p.Connections) populate(objectMap, "peerAsn", p.PeerAsn) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type PropertiesExchange. func (p *PropertiesExchange) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "connections": err = unpopulate(val, "Connections", &p.Connections) delete(rawMsg, key) case "peerAsn": err = unpopulate(val, "PeerAsn", &p.PeerAsn) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReceivedRoute. func (r ReceivedRoute) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "asPath", r.AsPath) populate(objectMap, "nextHop", r.NextHop) populate(objectMap, "originAsValidationState", r.OriginAsValidationState) populate(objectMap, "prefix", r.Prefix) populate(objectMap, "receivedTimestamp", r.ReceivedTimestamp) populate(objectMap, "rpkiValidationState", r.RpkiValidationState) populate(objectMap, "trustAnchor", r.TrustAnchor) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReceivedRoute. func (r *ReceivedRoute) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "asPath": err = unpopulate(val, "AsPath", &r.AsPath) delete(rawMsg, key) case "nextHop": err = unpopulate(val, "NextHop", &r.NextHop) delete(rawMsg, key) case "originAsValidationState": err = unpopulate(val, "OriginAsValidationState", &r.OriginAsValidationState) delete(rawMsg, key) case "prefix": err = unpopulate(val, "Prefix", &r.Prefix) delete(rawMsg, key) case "receivedTimestamp": err = unpopulate(val, "ReceivedTimestamp", &r.ReceivedTimestamp) delete(rawMsg, key) case "rpkiValidationState": err = unpopulate(val, "RpkiValidationState", &r.RpkiValidationState) delete(rawMsg, key) case "trustAnchor": err = unpopulate(val, "TrustAnchor", &r.TrustAnchor) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReceivedRouteListResult. func (r ReceivedRouteListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", r.NextLink) populate(objectMap, "value", r.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReceivedRouteListResult. func (r *ReceivedRouteListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &r.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &r.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type RegisteredAsn. func (r RegisteredAsn) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", r.ID) populate(objectMap, "name", r.Name) populate(objectMap, "properties", r.Properties) populate(objectMap, "type", r.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type RegisteredAsn. func (r *RegisteredAsn) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &r.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &r.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &r.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &r.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type RegisteredAsnListResult. func (r RegisteredAsnListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", r.NextLink) populate(objectMap, "value", r.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type RegisteredAsnListResult. func (r *RegisteredAsnListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &r.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &r.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type RegisteredAsnProperties. func (r RegisteredAsnProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "asn", r.Asn) populate(objectMap, "peeringServicePrefixKey", r.PeeringServicePrefixKey) populate(objectMap, "provisioningState", r.ProvisioningState) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type RegisteredAsnProperties. func (r *RegisteredAsnProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "asn": err = unpopulate(val, "Asn", &r.Asn) delete(rawMsg, key) case "peeringServicePrefixKey": err = unpopulate(val, "PeeringServicePrefixKey", &r.PeeringServicePrefixKey) delete(rawMsg, key) case "provisioningState": err = unpopulate(val, "ProvisioningState", &r.ProvisioningState) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type RegisteredPrefix. func (r RegisteredPrefix) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", r.ID) populate(objectMap, "name", r.Name) populate(objectMap, "properties", r.Properties) populate(objectMap, "type", r.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type RegisteredPrefix. func (r *RegisteredPrefix) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &r.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &r.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &r.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &r.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type RegisteredPrefixListResult. func (r RegisteredPrefixListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", r.NextLink) populate(objectMap, "value", r.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type RegisteredPrefixListResult. func (r *RegisteredPrefixListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &r.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &r.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type RegisteredPrefixProperties. func (r RegisteredPrefixProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "errorMessage", r.ErrorMessage) populate(objectMap, "peeringServicePrefixKey", r.PeeringServicePrefixKey) populate(objectMap, "prefix", r.Prefix) populate(objectMap, "prefixValidationState", r.PrefixValidationState) populate(objectMap, "provisioningState", r.ProvisioningState) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type RegisteredPrefixProperties. func (r *RegisteredPrefixProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "errorMessage": err = unpopulate(val, "ErrorMessage", &r.ErrorMessage) delete(rawMsg, key) case "peeringServicePrefixKey": err = unpopulate(val, "PeeringServicePrefixKey", &r.PeeringServicePrefixKey) delete(rawMsg, key) case "prefix": err = unpopulate(val, "Prefix", &r.Prefix) delete(rawMsg, key) case "prefixValidationState": err = unpopulate(val, "PrefixValidationState", &r.PrefixValidationState) delete(rawMsg, key) case "provisioningState": err = unpopulate(val, "ProvisioningState", &r.ProvisioningState) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Resource. func (r Resource) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", r.ID) populate(objectMap, "name", r.Name) populate(objectMap, "type", r.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Resource. func (r *Resource) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &r.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &r.Name) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &r.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ResourceTags. func (r ResourceTags) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "tags", r.Tags) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ResourceTags. func (r *ResourceTags) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "tags": err = unpopulate(val, "Tags", &r.Tags) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type SKU. func (s SKU) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "family", s.Family) populate(objectMap, "name", s.Name) populate(objectMap, "size", s.Size) populate(objectMap, "tier", s.Tier) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type SKU. func (s *SKU) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "family": err = unpopulate(val, "Family", &s.Family) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &s.Name) delete(rawMsg, key) case "size": err = unpopulate(val, "Size", &s.Size) delete(rawMsg, key) case "tier": err = unpopulate(val, "Tier", &s.Tier) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Service. func (s Service) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", s.ID) populate(objectMap, "location", s.Location) populate(objectMap, "name", s.Name) populate(objectMap, "properties", s.Properties) populate(objectMap, "sku", s.SKU) populate(objectMap, "tags", s.Tags) populate(objectMap, "type", s.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Service. func (s *Service) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &s.ID) delete(rawMsg, key) case "location": err = unpopulate(val, "Location", &s.Location) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &s.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &s.Properties) delete(rawMsg, key) case "sku": err = unpopulate(val, "SKU", &s.SKU) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &s.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &s.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceCountry. func (s ServiceCountry) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", s.ID) populate(objectMap, "name", s.Name) populate(objectMap, "type", s.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceCountry. func (s *ServiceCountry) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &s.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &s.Name) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &s.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceCountryListResult. func (s ServiceCountryListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", s.NextLink) populate(objectMap, "value", s.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceCountryListResult. func (s *ServiceCountryListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &s.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &s.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceListResult. func (s ServiceListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", s.NextLink) populate(objectMap, "value", s.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceListResult. func (s *ServiceListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &s.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &s.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceLocation. func (s ServiceLocation) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", s.ID) populate(objectMap, "name", s.Name) populate(objectMap, "properties", s.Properties) populate(objectMap, "type", s.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceLocation. func (s *ServiceLocation) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &s.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &s.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &s.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &s.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceLocationListResult. func (s ServiceLocationListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", s.NextLink) populate(objectMap, "value", s.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceLocationListResult. func (s *ServiceLocationListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &s.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &s.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceLocationProperties. func (s ServiceLocationProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "azureRegion", s.AzureRegion) populate(objectMap, "country", s.Country) populate(objectMap, "state", s.State) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceLocationProperties. func (s *ServiceLocationProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "azureRegion": err = unpopulate(val, "AzureRegion", &s.AzureRegion) delete(rawMsg, key) case "country": err = unpopulate(val, "Country", &s.Country) delete(rawMsg, key) case "state": err = unpopulate(val, "State", &s.State) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServicePrefix. func (s ServicePrefix) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", s.ID) populate(objectMap, "name", s.Name) populate(objectMap, "properties", s.Properties) populate(objectMap, "type", s.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServicePrefix. func (s *ServicePrefix) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &s.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &s.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &s.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &s.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServicePrefixEvent. func (s ServicePrefixEvent) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "eventDescription", s.EventDescription) populate(objectMap, "eventLevel", s.EventLevel) populate(objectMap, "eventSummary", s.EventSummary) populateDateTimeRFC3339(objectMap, "eventTimestamp", s.EventTimestamp) populate(objectMap, "eventType", s.EventType) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServicePrefixEvent. func (s *ServicePrefixEvent) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "eventDescription": err = unpopulate(val, "EventDescription", &s.EventDescription) delete(rawMsg, key) case "eventLevel": err = unpopulate(val, "EventLevel", &s.EventLevel) delete(rawMsg, key) case "eventSummary": err = unpopulate(val, "EventSummary", &s.EventSummary) delete(rawMsg, key) case "eventTimestamp": err = unpopulateDateTimeRFC3339(val, "EventTimestamp", &s.EventTimestamp) delete(rawMsg, key) case "eventType": err = unpopulate(val, "EventType", &s.EventType) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServicePrefixListResult. func (s ServicePrefixListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", s.NextLink) populate(objectMap, "value", s.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServicePrefixListResult. func (s *ServicePrefixListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &s.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &s.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServicePrefixProperties. func (s ServicePrefixProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "errorMessage", s.ErrorMessage) populate(objectMap, "events", s.Events) populate(objectMap, "learnedType", s.LearnedType) populate(objectMap, "peeringServicePrefixKey", s.PeeringServicePrefixKey) populate(objectMap, "prefix", s.Prefix) populate(objectMap, "prefixValidationState", s.PrefixValidationState) populate(objectMap, "provisioningState", s.ProvisioningState) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServicePrefixProperties. func (s *ServicePrefixProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "errorMessage": err = unpopulate(val, "ErrorMessage", &s.ErrorMessage) delete(rawMsg, key) case "events": err = unpopulate(val, "Events", &s.Events) delete(rawMsg, key) case "learnedType": err = unpopulate(val, "LearnedType", &s.LearnedType) delete(rawMsg, key) case "peeringServicePrefixKey": err = unpopulate(val, "PeeringServicePrefixKey", &s.PeeringServicePrefixKey) delete(rawMsg, key) case "prefix": err = unpopulate(val, "Prefix", &s.Prefix) delete(rawMsg, key) case "prefixValidationState": err = unpopulate(val, "PrefixValidationState", &s.PrefixValidationState) delete(rawMsg, key) case "provisioningState": err = unpopulate(val, "ProvisioningState", &s.ProvisioningState) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceProperties. func (s ServiceProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "logAnalyticsWorkspaceProperties", s.LogAnalyticsWorkspaceProperties) populate(objectMap, "peeringServiceLocation", s.PeeringServiceLocation) populate(objectMap, "peeringServiceProvider", s.PeeringServiceProvider) populate(objectMap, "providerBackupPeeringLocation", s.ProviderBackupPeeringLocation) populate(objectMap, "providerPrimaryPeeringLocation", s.ProviderPrimaryPeeringLocation) populate(objectMap, "provisioningState", s.ProvisioningState) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceProperties. func (s *ServiceProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "logAnalyticsWorkspaceProperties": err = unpopulate(val, "LogAnalyticsWorkspaceProperties", &s.LogAnalyticsWorkspaceProperties) delete(rawMsg, key) case "peeringServiceLocation": err = unpopulate(val, "PeeringServiceLocation", &s.PeeringServiceLocation) delete(rawMsg, key) case "peeringServiceProvider": err = unpopulate(val, "PeeringServiceProvider", &s.PeeringServiceProvider) delete(rawMsg, key) case "providerBackupPeeringLocation": err = unpopulate(val, "ProviderBackupPeeringLocation", &s.ProviderBackupPeeringLocation) delete(rawMsg, key) case "providerPrimaryPeeringLocation": err = unpopulate(val, "ProviderPrimaryPeeringLocation", &s.ProviderPrimaryPeeringLocation) delete(rawMsg, key) case "provisioningState": err = unpopulate(val, "ProvisioningState", &s.ProvisioningState) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceProvider. func (s ServiceProvider) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", s.ID) populate(objectMap, "name", s.Name) populate(objectMap, "properties", s.Properties) populate(objectMap, "type", s.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceProvider. func (s *ServiceProvider) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &s.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &s.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &s.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &s.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceProviderListResult. func (s ServiceProviderListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", s.NextLink) populate(objectMap, "value", s.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceProviderListResult. func (s *ServiceProviderListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &s.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &s.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceProviderProperties. func (s ServiceProviderProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "peeringLocations", s.PeeringLocations) populate(objectMap, "serviceProviderName", s.ServiceProviderName) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceProviderProperties. func (s *ServiceProviderProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "peeringLocations": err = unpopulate(val, "PeeringLocations", &s.PeeringLocations) delete(rawMsg, key) case "serviceProviderName": err = unpopulate(val, "ServiceProviderName", &s.ServiceProviderName) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceSKU. func (s ServiceSKU) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "name", s.Name) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceSKU. func (s *ServiceSKU) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "name": err = unpopulate(val, "Name", &s.Name) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ServiceSpecification. func (s ServiceSpecification) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "metricSpecifications", s.MetricSpecifications) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ServiceSpecification. func (s *ServiceSpecification) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "metricSpecifications": err = unpopulate(val, "MetricSpecifications", &s.MetricSpecifications) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type SubResource. func (s SubResource) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", s.ID) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type SubResource. func (s *SubResource) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &s.ID) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } func populate(m map[string]any, k string, v any) { if v == nil { return } else if azcore.IsNullValue(v) { m[k] = nil } else if !reflect.ValueOf(v).IsNil() { m[k] = v } } func unpopulate(data json.RawMessage, fn string, v any) error { if data == nil { return nil } if err := json.Unmarshal(data, v); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } return nil }