1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package ses
4
5import (
6	"context"
7	awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
8	"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
9	"github.com/aws/smithy-go/middleware"
10	smithyhttp "github.com/aws/smithy-go/transport/http"
11)
12
13// Creates a receipt rule set by cloning an existing one. All receipt rules and
14// configurations are copied to the new receipt rule set and are completely
15// independent of the source rule set. For information about setting up rule sets,
16// see the Amazon SES Developer Guide
17// (https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rule-set.html).
18// You can execute this operation no more than once per second.
19func (c *Client) CloneReceiptRuleSet(ctx context.Context, params *CloneReceiptRuleSetInput, optFns ...func(*Options)) (*CloneReceiptRuleSetOutput, error) {
20	if params == nil {
21		params = &CloneReceiptRuleSetInput{}
22	}
23
24	result, metadata, err := c.invokeOperation(ctx, "CloneReceiptRuleSet", params, optFns, addOperationCloneReceiptRuleSetMiddlewares)
25	if err != nil {
26		return nil, err
27	}
28
29	out := result.(*CloneReceiptRuleSetOutput)
30	out.ResultMetadata = metadata
31	return out, nil
32}
33
34// Represents a request to create a receipt rule set by cloning an existing one.
35// You use receipt rule sets to receive email with Amazon SES. For more
36// information, see the Amazon SES Developer Guide
37// (https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html).
38type CloneReceiptRuleSetInput struct {
39
40	// The name of the rule set to clone.
41	//
42	// This member is required.
43	OriginalRuleSetName *string
44
45	// The name of the rule set to create. The name must:
46	//
47	// * This value can only
48	// contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes
49	// (-).
50	//
51	// * Start and end with a letter or number.
52	//
53	// * Contain less than 64
54	// characters.
55	//
56	// This member is required.
57	RuleSetName *string
58}
59
60// An empty element returned on a successful request.
61type CloneReceiptRuleSetOutput struct {
62	// Metadata pertaining to the operation's result.
63	ResultMetadata middleware.Metadata
64}
65
66func addOperationCloneReceiptRuleSetMiddlewares(stack *middleware.Stack, options Options) (err error) {
67	err = stack.Serialize.Add(&awsAwsquery_serializeOpCloneReceiptRuleSet{}, middleware.After)
68	if err != nil {
69		return err
70	}
71	err = stack.Deserialize.Add(&awsAwsquery_deserializeOpCloneReceiptRuleSet{}, middleware.After)
72	if err != nil {
73		return err
74	}
75	if err = addSetLoggerMiddleware(stack, options); err != nil {
76		return err
77	}
78	if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
79		return err
80	}
81	if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
82		return err
83	}
84	if err = addResolveEndpointMiddleware(stack, options); err != nil {
85		return err
86	}
87	if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
88		return err
89	}
90	if err = addRetryMiddlewares(stack, options); err != nil {
91		return err
92	}
93	if err = addHTTPSignerV4Middleware(stack, options); err != nil {
94		return err
95	}
96	if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
97		return err
98	}
99	if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
100		return err
101	}
102	if err = addClientUserAgent(stack); err != nil {
103		return err
104	}
105	if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
106		return err
107	}
108	if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
109		return err
110	}
111	if err = addOpCloneReceiptRuleSetValidationMiddleware(stack); err != nil {
112		return err
113	}
114	if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCloneReceiptRuleSet(options.Region), middleware.Before); err != nil {
115		return err
116	}
117	if err = addRequestIDRetrieverMiddleware(stack); err != nil {
118		return err
119	}
120	if err = addResponseErrorMiddleware(stack); err != nil {
121		return err
122	}
123	if err = addRequestResponseLogging(stack, options); err != nil {
124		return err
125	}
126	return nil
127}
128
129func newServiceMetadataMiddleware_opCloneReceiptRuleSet(region string) *awsmiddleware.RegisterServiceMetadata {
130	return &awsmiddleware.RegisterServiceMetadata{
131		Region:        region,
132		ServiceID:     ServiceID,
133		SigningName:   "ses",
134		OperationName: "CloneReceiptRuleSet",
135	}
136}
137