1// +build go1.13
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5// Code generated by Microsoft (R) AutoRest Code Generator.
6// Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
8package armnetwork
9
10import "encoding/json"
11
12func unmarshalFirewallPolicyRuleClassification(rawMsg json.RawMessage) (FirewallPolicyRuleClassification, error) {
13	if rawMsg == nil {
14		return nil, nil
15	}
16	var m map[string]interface{}
17	if err := json.Unmarshal(rawMsg, &m); err != nil {
18		return nil, err
19	}
20	var b FirewallPolicyRuleClassification
21	switch m["ruleType"] {
22	case string(FirewallPolicyRuleTypeApplicationRule):
23		b = &ApplicationRule{}
24	case string(FirewallPolicyRuleTypeNatRule):
25		b = &NatRule{}
26	case string(FirewallPolicyRuleTypeNetworkRule):
27		b = &NetworkRule{}
28	default:
29		b = &FirewallPolicyRule{}
30	}
31	return b, json.Unmarshal(rawMsg, b)
32}
33
34func unmarshalFirewallPolicyRuleClassificationArray(rawMsg json.RawMessage) ([]FirewallPolicyRuleClassification, error) {
35	if rawMsg == nil {
36		return nil, nil
37	}
38	var rawMessages []json.RawMessage
39	if err := json.Unmarshal(rawMsg, &rawMessages); err != nil {
40		return nil, err
41	}
42	fArray := make([]FirewallPolicyRuleClassification, len(rawMessages))
43	for index, rawMessage := range rawMessages {
44		f, err := unmarshalFirewallPolicyRuleClassification(rawMessage)
45		if err != nil {
46			return nil, err
47		}
48		fArray[index] = f
49	}
50	return fArray, nil
51}
52
53func unmarshalFirewallPolicyRuleCollectionClassification(rawMsg json.RawMessage) (FirewallPolicyRuleCollectionClassification, error) {
54	if rawMsg == nil {
55		return nil, nil
56	}
57	var m map[string]interface{}
58	if err := json.Unmarshal(rawMsg, &m); err != nil {
59		return nil, err
60	}
61	var b FirewallPolicyRuleCollectionClassification
62	switch m["ruleCollectionType"] {
63	case string(FirewallPolicyRuleCollectionTypeFirewallPolicyFilterRuleCollection):
64		b = &FirewallPolicyFilterRuleCollection{}
65	case string(FirewallPolicyRuleCollectionTypeFirewallPolicyNatRuleCollection):
66		b = &FirewallPolicyNatRuleCollection{}
67	default:
68		b = &FirewallPolicyRuleCollection{}
69	}
70	return b, json.Unmarshal(rawMsg, b)
71}
72
73func unmarshalFirewallPolicyRuleCollectionClassificationArray(rawMsg json.RawMessage) ([]FirewallPolicyRuleCollectionClassification, error) {
74	if rawMsg == nil {
75		return nil, nil
76	}
77	var rawMessages []json.RawMessage
78	if err := json.Unmarshal(rawMsg, &rawMessages); err != nil {
79		return nil, err
80	}
81	fArray := make([]FirewallPolicyRuleCollectionClassification, len(rawMessages))
82	for index, rawMessage := range rawMessages {
83		f, err := unmarshalFirewallPolicyRuleCollectionClassification(rawMessage)
84		if err != nil {
85			return nil, err
86		}
87		fArray[index] = f
88	}
89	return fArray, nil
90}
91