1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/globalaccelerator/GlobalAccelerator_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/globalaccelerator/model/IpAddressType.h>
10 #include <aws/core/utils/memory/stl/AWSVector.h>
11 #include <aws/globalaccelerator/model/CustomRoutingAcceleratorStatus.h>
12 #include <aws/core/utils/DateTime.h>
13 #include <aws/globalaccelerator/model/IpSet.h>
14 #include <utility>
15 
16 namespace Aws
17 {
18 namespace Utils
19 {
20 namespace Json
21 {
22   class JsonValue;
23   class JsonView;
24 } // namespace Json
25 } // namespace Utils
26 namespace GlobalAccelerator
27 {
28 namespace Model
29 {
30 
31   /**
32    * <p>Attributes of a custom routing accelerator.</p><p><h3>See Also:</h3>   <a
33    * href="http://docs.aws.amazon.com/goto/WebAPI/globalaccelerator-2018-08-08/CustomRoutingAccelerator">AWS
34    * API Reference</a></p>
35    */
36   class AWS_GLOBALACCELERATOR_API CustomRoutingAccelerator
37   {
38   public:
39     CustomRoutingAccelerator();
40     CustomRoutingAccelerator(Aws::Utils::Json::JsonView jsonValue);
41     CustomRoutingAccelerator& operator=(Aws::Utils::Json::JsonView jsonValue);
42     Aws::Utils::Json::JsonValue Jsonize() const;
43 
44 
45     /**
46      * <p>The Amazon Resource Name (ARN) of the custom routing accelerator.</p>
47      */
GetAcceleratorArn()48     inline const Aws::String& GetAcceleratorArn() const{ return m_acceleratorArn; }
49 
50     /**
51      * <p>The Amazon Resource Name (ARN) of the custom routing accelerator.</p>
52      */
AcceleratorArnHasBeenSet()53     inline bool AcceleratorArnHasBeenSet() const { return m_acceleratorArnHasBeenSet; }
54 
55     /**
56      * <p>The Amazon Resource Name (ARN) of the custom routing accelerator.</p>
57      */
SetAcceleratorArn(const Aws::String & value)58     inline void SetAcceleratorArn(const Aws::String& value) { m_acceleratorArnHasBeenSet = true; m_acceleratorArn = value; }
59 
60     /**
61      * <p>The Amazon Resource Name (ARN) of the custom routing accelerator.</p>
62      */
SetAcceleratorArn(Aws::String && value)63     inline void SetAcceleratorArn(Aws::String&& value) { m_acceleratorArnHasBeenSet = true; m_acceleratorArn = std::move(value); }
64 
65     /**
66      * <p>The Amazon Resource Name (ARN) of the custom routing accelerator.</p>
67      */
SetAcceleratorArn(const char * value)68     inline void SetAcceleratorArn(const char* value) { m_acceleratorArnHasBeenSet = true; m_acceleratorArn.assign(value); }
69 
70     /**
71      * <p>The Amazon Resource Name (ARN) of the custom routing accelerator.</p>
72      */
WithAcceleratorArn(const Aws::String & value)73     inline CustomRoutingAccelerator& WithAcceleratorArn(const Aws::String& value) { SetAcceleratorArn(value); return *this;}
74 
75     /**
76      * <p>The Amazon Resource Name (ARN) of the custom routing accelerator.</p>
77      */
WithAcceleratorArn(Aws::String && value)78     inline CustomRoutingAccelerator& WithAcceleratorArn(Aws::String&& value) { SetAcceleratorArn(std::move(value)); return *this;}
79 
80     /**
81      * <p>The Amazon Resource Name (ARN) of the custom routing accelerator.</p>
82      */
WithAcceleratorArn(const char * value)83     inline CustomRoutingAccelerator& WithAcceleratorArn(const char* value) { SetAcceleratorArn(value); return *this;}
84 
85 
86     /**
87      * <p>The name of the accelerator. The name must contain only alphanumeric
88      * characters or hyphens (-), and must not begin or end with a hyphen.</p>
89      */
GetName()90     inline const Aws::String& GetName() const{ return m_name; }
91 
92     /**
93      * <p>The name of the accelerator. The name must contain only alphanumeric
94      * characters or hyphens (-), and must not begin or end with a hyphen.</p>
95      */
NameHasBeenSet()96     inline bool NameHasBeenSet() const { return m_nameHasBeenSet; }
97 
98     /**
99      * <p>The name of the accelerator. The name must contain only alphanumeric
100      * characters or hyphens (-), and must not begin or end with a hyphen.</p>
101      */
SetName(const Aws::String & value)102     inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; }
103 
104     /**
105      * <p>The name of the accelerator. The name must contain only alphanumeric
106      * characters or hyphens (-), and must not begin or end with a hyphen.</p>
107      */
SetName(Aws::String && value)108     inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); }
109 
110     /**
111      * <p>The name of the accelerator. The name must contain only alphanumeric
112      * characters or hyphens (-), and must not begin or end with a hyphen.</p>
113      */
SetName(const char * value)114     inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); }
115 
116     /**
117      * <p>The name of the accelerator. The name must contain only alphanumeric
118      * characters or hyphens (-), and must not begin or end with a hyphen.</p>
119      */
WithName(const Aws::String & value)120     inline CustomRoutingAccelerator& WithName(const Aws::String& value) { SetName(value); return *this;}
121 
122     /**
123      * <p>The name of the accelerator. The name must contain only alphanumeric
124      * characters or hyphens (-), and must not begin or end with a hyphen.</p>
125      */
WithName(Aws::String && value)126     inline CustomRoutingAccelerator& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;}
127 
128     /**
129      * <p>The name of the accelerator. The name must contain only alphanumeric
130      * characters or hyphens (-), and must not begin or end with a hyphen.</p>
131      */
WithName(const char * value)132     inline CustomRoutingAccelerator& WithName(const char* value) { SetName(value); return *this;}
133 
134 
135     /**
136      * <p>The value for the address type must be IPv4.</p>
137      */
GetIpAddressType()138     inline const IpAddressType& GetIpAddressType() const{ return m_ipAddressType; }
139 
140     /**
141      * <p>The value for the address type must be IPv4.</p>
142      */
IpAddressTypeHasBeenSet()143     inline bool IpAddressTypeHasBeenSet() const { return m_ipAddressTypeHasBeenSet; }
144 
145     /**
146      * <p>The value for the address type must be IPv4.</p>
147      */
SetIpAddressType(const IpAddressType & value)148     inline void SetIpAddressType(const IpAddressType& value) { m_ipAddressTypeHasBeenSet = true; m_ipAddressType = value; }
149 
150     /**
151      * <p>The value for the address type must be IPv4.</p>
152      */
SetIpAddressType(IpAddressType && value)153     inline void SetIpAddressType(IpAddressType&& value) { m_ipAddressTypeHasBeenSet = true; m_ipAddressType = std::move(value); }
154 
155     /**
156      * <p>The value for the address type must be IPv4.</p>
157      */
WithIpAddressType(const IpAddressType & value)158     inline CustomRoutingAccelerator& WithIpAddressType(const IpAddressType& value) { SetIpAddressType(value); return *this;}
159 
160     /**
161      * <p>The value for the address type must be IPv4.</p>
162      */
WithIpAddressType(IpAddressType && value)163     inline CustomRoutingAccelerator& WithIpAddressType(IpAddressType&& value) { SetIpAddressType(std::move(value)); return *this;}
164 
165 
166     /**
167      * <p>Indicates whether the accelerator is enabled. The value is true or false. The
168      * default value is true. </p> <p>If the value is set to true, the accelerator
169      * cannot be deleted. If set to false, accelerator can be deleted.</p>
170      */
GetEnabled()171     inline bool GetEnabled() const{ return m_enabled; }
172 
173     /**
174      * <p>Indicates whether the accelerator is enabled. The value is true or false. The
175      * default value is true. </p> <p>If the value is set to true, the accelerator
176      * cannot be deleted. If set to false, accelerator can be deleted.</p>
177      */
EnabledHasBeenSet()178     inline bool EnabledHasBeenSet() const { return m_enabledHasBeenSet; }
179 
180     /**
181      * <p>Indicates whether the accelerator is enabled. The value is true or false. The
182      * default value is true. </p> <p>If the value is set to true, the accelerator
183      * cannot be deleted. If set to false, accelerator can be deleted.</p>
184      */
SetEnabled(bool value)185     inline void SetEnabled(bool value) { m_enabledHasBeenSet = true; m_enabled = value; }
186 
187     /**
188      * <p>Indicates whether the accelerator is enabled. The value is true or false. The
189      * default value is true. </p> <p>If the value is set to true, the accelerator
190      * cannot be deleted. If set to false, accelerator can be deleted.</p>
191      */
WithEnabled(bool value)192     inline CustomRoutingAccelerator& WithEnabled(bool value) { SetEnabled(value); return *this;}
193 
194 
195     /**
196      * <p>The static IP addresses that Global Accelerator associates with the
197      * accelerator.</p>
198      */
GetIpSets()199     inline const Aws::Vector<IpSet>& GetIpSets() const{ return m_ipSets; }
200 
201     /**
202      * <p>The static IP addresses that Global Accelerator associates with the
203      * accelerator.</p>
204      */
IpSetsHasBeenSet()205     inline bool IpSetsHasBeenSet() const { return m_ipSetsHasBeenSet; }
206 
207     /**
208      * <p>The static IP addresses that Global Accelerator associates with the
209      * accelerator.</p>
210      */
SetIpSets(const Aws::Vector<IpSet> & value)211     inline void SetIpSets(const Aws::Vector<IpSet>& value) { m_ipSetsHasBeenSet = true; m_ipSets = value; }
212 
213     /**
214      * <p>The static IP addresses that Global Accelerator associates with the
215      * accelerator.</p>
216      */
SetIpSets(Aws::Vector<IpSet> && value)217     inline void SetIpSets(Aws::Vector<IpSet>&& value) { m_ipSetsHasBeenSet = true; m_ipSets = std::move(value); }
218 
219     /**
220      * <p>The static IP addresses that Global Accelerator associates with the
221      * accelerator.</p>
222      */
WithIpSets(const Aws::Vector<IpSet> & value)223     inline CustomRoutingAccelerator& WithIpSets(const Aws::Vector<IpSet>& value) { SetIpSets(value); return *this;}
224 
225     /**
226      * <p>The static IP addresses that Global Accelerator associates with the
227      * accelerator.</p>
228      */
WithIpSets(Aws::Vector<IpSet> && value)229     inline CustomRoutingAccelerator& WithIpSets(Aws::Vector<IpSet>&& value) { SetIpSets(std::move(value)); return *this;}
230 
231     /**
232      * <p>The static IP addresses that Global Accelerator associates with the
233      * accelerator.</p>
234      */
AddIpSets(const IpSet & value)235     inline CustomRoutingAccelerator& AddIpSets(const IpSet& value) { m_ipSetsHasBeenSet = true; m_ipSets.push_back(value); return *this; }
236 
237     /**
238      * <p>The static IP addresses that Global Accelerator associates with the
239      * accelerator.</p>
240      */
AddIpSets(IpSet && value)241     inline CustomRoutingAccelerator& AddIpSets(IpSet&& value) { m_ipSetsHasBeenSet = true; m_ipSets.push_back(std::move(value)); return *this; }
242 
243 
244     /**
245      * <p>The Domain Name System (DNS) name that Global Accelerator creates that points
246      * to your accelerator's static IP addresses. </p> <p>The naming convention for the
247      * DNS name is the following: A lowercase letter a, followed by a 16-bit random hex
248      * string, followed by .awsglobalaccelerator.com. For example:
249      * a1234567890abcdef.awsglobalaccelerator.com.</p> <p>For more information about
250      * the default DNS name, see <a
251      * href="https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing">
252      * Support for DNS Addressing in Global Accelerator</a> in the <i>AWS Global
253      * Accelerator Developer Guide</i>.</p>
254      */
GetDnsName()255     inline const Aws::String& GetDnsName() const{ return m_dnsName; }
256 
257     /**
258      * <p>The Domain Name System (DNS) name that Global Accelerator creates that points
259      * to your accelerator's static IP addresses. </p> <p>The naming convention for the
260      * DNS name is the following: A lowercase letter a, followed by a 16-bit random hex
261      * string, followed by .awsglobalaccelerator.com. For example:
262      * a1234567890abcdef.awsglobalaccelerator.com.</p> <p>For more information about
263      * the default DNS name, see <a
264      * href="https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing">
265      * Support for DNS Addressing in Global Accelerator</a> in the <i>AWS Global
266      * Accelerator Developer Guide</i>.</p>
267      */
DnsNameHasBeenSet()268     inline bool DnsNameHasBeenSet() const { return m_dnsNameHasBeenSet; }
269 
270     /**
271      * <p>The Domain Name System (DNS) name that Global Accelerator creates that points
272      * to your accelerator's static IP addresses. </p> <p>The naming convention for the
273      * DNS name is the following: A lowercase letter a, followed by a 16-bit random hex
274      * string, followed by .awsglobalaccelerator.com. For example:
275      * a1234567890abcdef.awsglobalaccelerator.com.</p> <p>For more information about
276      * the default DNS name, see <a
277      * href="https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing">
278      * Support for DNS Addressing in Global Accelerator</a> in the <i>AWS Global
279      * Accelerator Developer Guide</i>.</p>
280      */
SetDnsName(const Aws::String & value)281     inline void SetDnsName(const Aws::String& value) { m_dnsNameHasBeenSet = true; m_dnsName = value; }
282 
283     /**
284      * <p>The Domain Name System (DNS) name that Global Accelerator creates that points
285      * to your accelerator's static IP addresses. </p> <p>The naming convention for the
286      * DNS name is the following: A lowercase letter a, followed by a 16-bit random hex
287      * string, followed by .awsglobalaccelerator.com. For example:
288      * a1234567890abcdef.awsglobalaccelerator.com.</p> <p>For more information about
289      * the default DNS name, see <a
290      * href="https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing">
291      * Support for DNS Addressing in Global Accelerator</a> in the <i>AWS Global
292      * Accelerator Developer Guide</i>.</p>
293      */
SetDnsName(Aws::String && value)294     inline void SetDnsName(Aws::String&& value) { m_dnsNameHasBeenSet = true; m_dnsName = std::move(value); }
295 
296     /**
297      * <p>The Domain Name System (DNS) name that Global Accelerator creates that points
298      * to your accelerator's static IP addresses. </p> <p>The naming convention for the
299      * DNS name is the following: A lowercase letter a, followed by a 16-bit random hex
300      * string, followed by .awsglobalaccelerator.com. For example:
301      * a1234567890abcdef.awsglobalaccelerator.com.</p> <p>For more information about
302      * the default DNS name, see <a
303      * href="https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing">
304      * Support for DNS Addressing in Global Accelerator</a> in the <i>AWS Global
305      * Accelerator Developer Guide</i>.</p>
306      */
SetDnsName(const char * value)307     inline void SetDnsName(const char* value) { m_dnsNameHasBeenSet = true; m_dnsName.assign(value); }
308 
309     /**
310      * <p>The Domain Name System (DNS) name that Global Accelerator creates that points
311      * to your accelerator's static IP addresses. </p> <p>The naming convention for the
312      * DNS name is the following: A lowercase letter a, followed by a 16-bit random hex
313      * string, followed by .awsglobalaccelerator.com. For example:
314      * a1234567890abcdef.awsglobalaccelerator.com.</p> <p>For more information about
315      * the default DNS name, see <a
316      * href="https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing">
317      * Support for DNS Addressing in Global Accelerator</a> in the <i>AWS Global
318      * Accelerator Developer Guide</i>.</p>
319      */
WithDnsName(const Aws::String & value)320     inline CustomRoutingAccelerator& WithDnsName(const Aws::String& value) { SetDnsName(value); return *this;}
321 
322     /**
323      * <p>The Domain Name System (DNS) name that Global Accelerator creates that points
324      * to your accelerator's static IP addresses. </p> <p>The naming convention for the
325      * DNS name is the following: A lowercase letter a, followed by a 16-bit random hex
326      * string, followed by .awsglobalaccelerator.com. For example:
327      * a1234567890abcdef.awsglobalaccelerator.com.</p> <p>For more information about
328      * the default DNS name, see <a
329      * href="https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing">
330      * Support for DNS Addressing in Global Accelerator</a> in the <i>AWS Global
331      * Accelerator Developer Guide</i>.</p>
332      */
WithDnsName(Aws::String && value)333     inline CustomRoutingAccelerator& WithDnsName(Aws::String&& value) { SetDnsName(std::move(value)); return *this;}
334 
335     /**
336      * <p>The Domain Name System (DNS) name that Global Accelerator creates that points
337      * to your accelerator's static IP addresses. </p> <p>The naming convention for the
338      * DNS name is the following: A lowercase letter a, followed by a 16-bit random hex
339      * string, followed by .awsglobalaccelerator.com. For example:
340      * a1234567890abcdef.awsglobalaccelerator.com.</p> <p>For more information about
341      * the default DNS name, see <a
342      * href="https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html#about-accelerators.dns-addressing">
343      * Support for DNS Addressing in Global Accelerator</a> in the <i>AWS Global
344      * Accelerator Developer Guide</i>.</p>
345      */
WithDnsName(const char * value)346     inline CustomRoutingAccelerator& WithDnsName(const char* value) { SetDnsName(value); return *this;}
347 
348 
349     /**
350      * <p>Describes the deployment status of the accelerator.</p>
351      */
GetStatus()352     inline const CustomRoutingAcceleratorStatus& GetStatus() const{ return m_status; }
353 
354     /**
355      * <p>Describes the deployment status of the accelerator.</p>
356      */
StatusHasBeenSet()357     inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; }
358 
359     /**
360      * <p>Describes the deployment status of the accelerator.</p>
361      */
SetStatus(const CustomRoutingAcceleratorStatus & value)362     inline void SetStatus(const CustomRoutingAcceleratorStatus& value) { m_statusHasBeenSet = true; m_status = value; }
363 
364     /**
365      * <p>Describes the deployment status of the accelerator.</p>
366      */
SetStatus(CustomRoutingAcceleratorStatus && value)367     inline void SetStatus(CustomRoutingAcceleratorStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); }
368 
369     /**
370      * <p>Describes the deployment status of the accelerator.</p>
371      */
WithStatus(const CustomRoutingAcceleratorStatus & value)372     inline CustomRoutingAccelerator& WithStatus(const CustomRoutingAcceleratorStatus& value) { SetStatus(value); return *this;}
373 
374     /**
375      * <p>Describes the deployment status of the accelerator.</p>
376      */
WithStatus(CustomRoutingAcceleratorStatus && value)377     inline CustomRoutingAccelerator& WithStatus(CustomRoutingAcceleratorStatus&& value) { SetStatus(std::move(value)); return *this;}
378 
379 
380     /**
381      * <p>The date and time that the accelerator was created.</p>
382      */
GetCreatedTime()383     inline const Aws::Utils::DateTime& GetCreatedTime() const{ return m_createdTime; }
384 
385     /**
386      * <p>The date and time that the accelerator was created.</p>
387      */
CreatedTimeHasBeenSet()388     inline bool CreatedTimeHasBeenSet() const { return m_createdTimeHasBeenSet; }
389 
390     /**
391      * <p>The date and time that the accelerator was created.</p>
392      */
SetCreatedTime(const Aws::Utils::DateTime & value)393     inline void SetCreatedTime(const Aws::Utils::DateTime& value) { m_createdTimeHasBeenSet = true; m_createdTime = value; }
394 
395     /**
396      * <p>The date and time that the accelerator was created.</p>
397      */
SetCreatedTime(Aws::Utils::DateTime && value)398     inline void SetCreatedTime(Aws::Utils::DateTime&& value) { m_createdTimeHasBeenSet = true; m_createdTime = std::move(value); }
399 
400     /**
401      * <p>The date and time that the accelerator was created.</p>
402      */
WithCreatedTime(const Aws::Utils::DateTime & value)403     inline CustomRoutingAccelerator& WithCreatedTime(const Aws::Utils::DateTime& value) { SetCreatedTime(value); return *this;}
404 
405     /**
406      * <p>The date and time that the accelerator was created.</p>
407      */
WithCreatedTime(Aws::Utils::DateTime && value)408     inline CustomRoutingAccelerator& WithCreatedTime(Aws::Utils::DateTime&& value) { SetCreatedTime(std::move(value)); return *this;}
409 
410 
411     /**
412      * <p>The date and time that the accelerator was last modified.</p>
413      */
GetLastModifiedTime()414     inline const Aws::Utils::DateTime& GetLastModifiedTime() const{ return m_lastModifiedTime; }
415 
416     /**
417      * <p>The date and time that the accelerator was last modified.</p>
418      */
LastModifiedTimeHasBeenSet()419     inline bool LastModifiedTimeHasBeenSet() const { return m_lastModifiedTimeHasBeenSet; }
420 
421     /**
422      * <p>The date and time that the accelerator was last modified.</p>
423      */
SetLastModifiedTime(const Aws::Utils::DateTime & value)424     inline void SetLastModifiedTime(const Aws::Utils::DateTime& value) { m_lastModifiedTimeHasBeenSet = true; m_lastModifiedTime = value; }
425 
426     /**
427      * <p>The date and time that the accelerator was last modified.</p>
428      */
SetLastModifiedTime(Aws::Utils::DateTime && value)429     inline void SetLastModifiedTime(Aws::Utils::DateTime&& value) { m_lastModifiedTimeHasBeenSet = true; m_lastModifiedTime = std::move(value); }
430 
431     /**
432      * <p>The date and time that the accelerator was last modified.</p>
433      */
WithLastModifiedTime(const Aws::Utils::DateTime & value)434     inline CustomRoutingAccelerator& WithLastModifiedTime(const Aws::Utils::DateTime& value) { SetLastModifiedTime(value); return *this;}
435 
436     /**
437      * <p>The date and time that the accelerator was last modified.</p>
438      */
WithLastModifiedTime(Aws::Utils::DateTime && value)439     inline CustomRoutingAccelerator& WithLastModifiedTime(Aws::Utils::DateTime&& value) { SetLastModifiedTime(std::move(value)); return *this;}
440 
441   private:
442 
443     Aws::String m_acceleratorArn;
444     bool m_acceleratorArnHasBeenSet;
445 
446     Aws::String m_name;
447     bool m_nameHasBeenSet;
448 
449     IpAddressType m_ipAddressType;
450     bool m_ipAddressTypeHasBeenSet;
451 
452     bool m_enabled;
453     bool m_enabledHasBeenSet;
454 
455     Aws::Vector<IpSet> m_ipSets;
456     bool m_ipSetsHasBeenSet;
457 
458     Aws::String m_dnsName;
459     bool m_dnsNameHasBeenSet;
460 
461     CustomRoutingAcceleratorStatus m_status;
462     bool m_statusHasBeenSet;
463 
464     Aws::Utils::DateTime m_createdTime;
465     bool m_createdTimeHasBeenSet;
466 
467     Aws::Utils::DateTime m_lastModifiedTime;
468     bool m_lastModifiedTimeHasBeenSet;
469   };
470 
471 } // namespace Model
472 } // namespace GlobalAccelerator
473 } // namespace Aws
474