1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #include <aws/opensearch/model/VPCDerivedInfo.h>
7 #include <aws/core/utils/json/JsonSerializer.h>
8 
9 #include <utility>
10 
11 using namespace Aws::Utils::Json;
12 using namespace Aws::Utils;
13 
14 namespace Aws
15 {
16 namespace OpenSearchService
17 {
18 namespace Model
19 {
20 
VPCDerivedInfo()21 VPCDerivedInfo::VPCDerivedInfo() :
22     m_vPCIdHasBeenSet(false),
23     m_subnetIdsHasBeenSet(false),
24     m_availabilityZonesHasBeenSet(false),
25     m_securityGroupIdsHasBeenSet(false)
26 {
27 }
28 
VPCDerivedInfo(JsonView jsonValue)29 VPCDerivedInfo::VPCDerivedInfo(JsonView jsonValue) :
30     m_vPCIdHasBeenSet(false),
31     m_subnetIdsHasBeenSet(false),
32     m_availabilityZonesHasBeenSet(false),
33     m_securityGroupIdsHasBeenSet(false)
34 {
35   *this = jsonValue;
36 }
37 
operator =(JsonView jsonValue)38 VPCDerivedInfo& VPCDerivedInfo::operator =(JsonView jsonValue)
39 {
40   if(jsonValue.ValueExists("VPCId"))
41   {
42     m_vPCId = jsonValue.GetString("VPCId");
43 
44     m_vPCIdHasBeenSet = true;
45   }
46 
47   if(jsonValue.ValueExists("SubnetIds"))
48   {
49     Array<JsonView> subnetIdsJsonList = jsonValue.GetArray("SubnetIds");
50     for(unsigned subnetIdsIndex = 0; subnetIdsIndex < subnetIdsJsonList.GetLength(); ++subnetIdsIndex)
51     {
52       m_subnetIds.push_back(subnetIdsJsonList[subnetIdsIndex].AsString());
53     }
54     m_subnetIdsHasBeenSet = true;
55   }
56 
57   if(jsonValue.ValueExists("AvailabilityZones"))
58   {
59     Array<JsonView> availabilityZonesJsonList = jsonValue.GetArray("AvailabilityZones");
60     for(unsigned availabilityZonesIndex = 0; availabilityZonesIndex < availabilityZonesJsonList.GetLength(); ++availabilityZonesIndex)
61     {
62       m_availabilityZones.push_back(availabilityZonesJsonList[availabilityZonesIndex].AsString());
63     }
64     m_availabilityZonesHasBeenSet = true;
65   }
66 
67   if(jsonValue.ValueExists("SecurityGroupIds"))
68   {
69     Array<JsonView> securityGroupIdsJsonList = jsonValue.GetArray("SecurityGroupIds");
70     for(unsigned securityGroupIdsIndex = 0; securityGroupIdsIndex < securityGroupIdsJsonList.GetLength(); ++securityGroupIdsIndex)
71     {
72       m_securityGroupIds.push_back(securityGroupIdsJsonList[securityGroupIdsIndex].AsString());
73     }
74     m_securityGroupIdsHasBeenSet = true;
75   }
76 
77   return *this;
78 }
79 
Jsonize() const80 JsonValue VPCDerivedInfo::Jsonize() const
81 {
82   JsonValue payload;
83 
84   if(m_vPCIdHasBeenSet)
85   {
86    payload.WithString("VPCId", m_vPCId);
87 
88   }
89 
90   if(m_subnetIdsHasBeenSet)
91   {
92    Array<JsonValue> subnetIdsJsonList(m_subnetIds.size());
93    for(unsigned subnetIdsIndex = 0; subnetIdsIndex < subnetIdsJsonList.GetLength(); ++subnetIdsIndex)
94    {
95      subnetIdsJsonList[subnetIdsIndex].AsString(m_subnetIds[subnetIdsIndex]);
96    }
97    payload.WithArray("SubnetIds", std::move(subnetIdsJsonList));
98 
99   }
100 
101   if(m_availabilityZonesHasBeenSet)
102   {
103    Array<JsonValue> availabilityZonesJsonList(m_availabilityZones.size());
104    for(unsigned availabilityZonesIndex = 0; availabilityZonesIndex < availabilityZonesJsonList.GetLength(); ++availabilityZonesIndex)
105    {
106      availabilityZonesJsonList[availabilityZonesIndex].AsString(m_availabilityZones[availabilityZonesIndex]);
107    }
108    payload.WithArray("AvailabilityZones", std::move(availabilityZonesJsonList));
109 
110   }
111 
112   if(m_securityGroupIdsHasBeenSet)
113   {
114    Array<JsonValue> securityGroupIdsJsonList(m_securityGroupIds.size());
115    for(unsigned securityGroupIdsIndex = 0; securityGroupIdsIndex < securityGroupIdsJsonList.GetLength(); ++securityGroupIdsIndex)
116    {
117      securityGroupIdsJsonList[securityGroupIdsIndex].AsString(m_securityGroupIds[securityGroupIdsIndex]);
118    }
119    payload.WithArray("SecurityGroupIds", std::move(securityGroupIdsJsonList));
120 
121   }
122 
123   return payload;
124 }
125 
126 } // namespace Model
127 } // namespace OpenSearchService
128 } // namespace Aws
129