1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #include <aws/dlm/model/FastRestoreRule.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 DLM
17 {
18 namespace Model
19 {
20 
FastRestoreRule()21 FastRestoreRule::FastRestoreRule() :
22     m_count(0),
23     m_countHasBeenSet(false),
24     m_interval(0),
25     m_intervalHasBeenSet(false),
26     m_intervalUnit(RetentionIntervalUnitValues::NOT_SET),
27     m_intervalUnitHasBeenSet(false),
28     m_availabilityZonesHasBeenSet(false)
29 {
30 }
31 
FastRestoreRule(JsonView jsonValue)32 FastRestoreRule::FastRestoreRule(JsonView jsonValue) :
33     m_count(0),
34     m_countHasBeenSet(false),
35     m_interval(0),
36     m_intervalHasBeenSet(false),
37     m_intervalUnit(RetentionIntervalUnitValues::NOT_SET),
38     m_intervalUnitHasBeenSet(false),
39     m_availabilityZonesHasBeenSet(false)
40 {
41   *this = jsonValue;
42 }
43 
operator =(JsonView jsonValue)44 FastRestoreRule& FastRestoreRule::operator =(JsonView jsonValue)
45 {
46   if(jsonValue.ValueExists("Count"))
47   {
48     m_count = jsonValue.GetInteger("Count");
49 
50     m_countHasBeenSet = true;
51   }
52 
53   if(jsonValue.ValueExists("Interval"))
54   {
55     m_interval = jsonValue.GetInteger("Interval");
56 
57     m_intervalHasBeenSet = true;
58   }
59 
60   if(jsonValue.ValueExists("IntervalUnit"))
61   {
62     m_intervalUnit = RetentionIntervalUnitValuesMapper::GetRetentionIntervalUnitValuesForName(jsonValue.GetString("IntervalUnit"));
63 
64     m_intervalUnitHasBeenSet = true;
65   }
66 
67   if(jsonValue.ValueExists("AvailabilityZones"))
68   {
69     Array<JsonView> availabilityZonesJsonList = jsonValue.GetArray("AvailabilityZones");
70     for(unsigned availabilityZonesIndex = 0; availabilityZonesIndex < availabilityZonesJsonList.GetLength(); ++availabilityZonesIndex)
71     {
72       m_availabilityZones.push_back(availabilityZonesJsonList[availabilityZonesIndex].AsString());
73     }
74     m_availabilityZonesHasBeenSet = true;
75   }
76 
77   return *this;
78 }
79 
Jsonize() const80 JsonValue FastRestoreRule::Jsonize() const
81 {
82   JsonValue payload;
83 
84   if(m_countHasBeenSet)
85   {
86    payload.WithInteger("Count", m_count);
87 
88   }
89 
90   if(m_intervalHasBeenSet)
91   {
92    payload.WithInteger("Interval", m_interval);
93 
94   }
95 
96   if(m_intervalUnitHasBeenSet)
97   {
98    payload.WithString("IntervalUnit", RetentionIntervalUnitValuesMapper::GetNameForRetentionIntervalUnitValues(m_intervalUnit));
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   return payload;
113 }
114 
115 } // namespace Model
116 } // namespace DLM
117 } // namespace Aws
118