1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package s3control
4
5import (
6	"context"
7	"fmt"
8	awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
9	"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
10	s3controlcust "github.com/aws/aws-sdk-go-v2/service/s3control/internal/customizations"
11	smithy "github.com/aws/smithy-go"
12	"github.com/aws/smithy-go/middleware"
13	smithyhttp "github.com/aws/smithy-go/transport/http"
14	"strings"
15)
16
17// Updates an existing S3 Batch Operations job's priority. For more information,
18// see S3 Batch Operations
19// (https://docs.aws.amazon.com/AmazonS3/latest/dev/batch-ops-basics.html) in the
20// Amazon Simple Storage Service User Guide. Related actions include:
21//
22// * CreateJob
23// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html)
24//
25// *
26// ListJobs
27// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListJobs.html)
28//
29// *
30// DescribeJob
31// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html)
32//
33// *
34// UpdateJobStatus
35// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateJobStatus.html)
36func (c *Client) UpdateJobPriority(ctx context.Context, params *UpdateJobPriorityInput, optFns ...func(*Options)) (*UpdateJobPriorityOutput, error) {
37	if params == nil {
38		params = &UpdateJobPriorityInput{}
39	}
40
41	result, metadata, err := c.invokeOperation(ctx, "UpdateJobPriority", params, optFns, addOperationUpdateJobPriorityMiddlewares)
42	if err != nil {
43		return nil, err
44	}
45
46	out := result.(*UpdateJobPriorityOutput)
47	out.ResultMetadata = metadata
48	return out, nil
49}
50
51type UpdateJobPriorityInput struct {
52
53	// The AWS account ID associated with the S3 Batch Operations job.
54	//
55	// This member is required.
56	AccountId *string
57
58	// The ID for the job whose priority you want to update.
59	//
60	// This member is required.
61	JobId *string
62
63	// The priority you want to assign to this job.
64	//
65	// This member is required.
66	Priority int32
67}
68
69type UpdateJobPriorityOutput struct {
70
71	// The ID for the job whose priority Amazon S3 updated.
72	//
73	// This member is required.
74	JobId *string
75
76	// The new priority assigned to the specified job.
77	//
78	// This member is required.
79	Priority int32
80
81	// Metadata pertaining to the operation's result.
82	ResultMetadata middleware.Metadata
83}
84
85func addOperationUpdateJobPriorityMiddlewares(stack *middleware.Stack, options Options) (err error) {
86	err = stack.Serialize.Add(&awsRestxml_serializeOpUpdateJobPriority{}, middleware.After)
87	if err != nil {
88		return err
89	}
90	err = stack.Deserialize.Add(&awsRestxml_deserializeOpUpdateJobPriority{}, middleware.After)
91	if err != nil {
92		return err
93	}
94	if err = addSetLoggerMiddleware(stack, options); err != nil {
95		return err
96	}
97	if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
98		return err
99	}
100	if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
101		return err
102	}
103	if err = addResolveEndpointMiddleware(stack, options); err != nil {
104		return err
105	}
106	if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
107		return err
108	}
109	if err = addRetryMiddlewares(stack, options); err != nil {
110		return err
111	}
112	if err = addHTTPSignerV4Middleware(stack, options); err != nil {
113		return err
114	}
115	if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
116		return err
117	}
118	if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
119		return err
120	}
121	if err = addClientUserAgent(stack); err != nil {
122		return err
123	}
124	if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
125		return err
126	}
127	if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
128		return err
129	}
130	if err = addEndpointPrefix_opUpdateJobPriorityMiddleware(stack); err != nil {
131		return err
132	}
133	if err = addOpUpdateJobPriorityValidationMiddleware(stack); err != nil {
134		return err
135	}
136	if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateJobPriority(options.Region), middleware.Before); err != nil {
137		return err
138	}
139	if err = addMetadataRetrieverMiddleware(stack); err != nil {
140		return err
141	}
142	if err = addUpdateJobPriorityUpdateEndpoint(stack, options); err != nil {
143		return err
144	}
145	if err = addResponseErrorMiddleware(stack); err != nil {
146		return err
147	}
148	if err = v4.AddContentSHA256HeaderMiddleware(stack); err != nil {
149		return err
150	}
151	if err = addRequestResponseLogging(stack, options); err != nil {
152		return err
153	}
154	return nil
155}
156
157type endpointPrefix_opUpdateJobPriorityMiddleware struct {
158}
159
160func (*endpointPrefix_opUpdateJobPriorityMiddleware) ID() string {
161	return "EndpointHostPrefix"
162}
163
164func (m *endpointPrefix_opUpdateJobPriorityMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
165	out middleware.SerializeOutput, metadata middleware.Metadata, err error,
166) {
167	if smithyhttp.GetHostnameImmutable(ctx) || smithyhttp.IsEndpointHostPrefixDisabled(ctx) {
168		return next.HandleSerialize(ctx, in)
169	}
170
171	req, ok := in.Request.(*smithyhttp.Request)
172	if !ok {
173		return out, metadata, fmt.Errorf("unknown transport type %T", in.Request)
174	}
175
176	input, ok := in.Parameters.(*UpdateJobPriorityInput)
177	if !ok {
178		return out, metadata, fmt.Errorf("unknown input type %T", in.Parameters)
179	}
180
181	var prefix strings.Builder
182	if input.AccountId == nil {
183		return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("AccountId forms part of the endpoint host and so may not be nil")}
184	} else if !smithyhttp.ValidHostLabel(*input.AccountId) {
185		return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("AccountId forms part of the endpoint host and so must match \"[a-zA-Z0-9-]{1,63}\", but was \"%s\"", *input.AccountId)}
186	} else {
187		prefix.WriteString(*input.AccountId)
188	}
189	prefix.WriteString(".")
190	req.URL.Host = prefix.String() + req.URL.Host
191
192	return next.HandleSerialize(ctx, in)
193}
194func addEndpointPrefix_opUpdateJobPriorityMiddleware(stack *middleware.Stack) error {
195	return stack.Serialize.Insert(&endpointPrefix_opUpdateJobPriorityMiddleware{}, `OperationSerializer`, middleware.After)
196}
197
198func newServiceMetadataMiddleware_opUpdateJobPriority(region string) *awsmiddleware.RegisterServiceMetadata {
199	return &awsmiddleware.RegisterServiceMetadata{
200		Region:        region,
201		ServiceID:     ServiceID,
202		SigningName:   "s3",
203		OperationName: "UpdateJobPriority",
204	}
205}
206
207func copyUpdateJobPriorityInputForUpdateEndpoint(params interface{}) (interface{}, error) {
208	input, ok := params.(*UpdateJobPriorityInput)
209	if !ok {
210		return nil, fmt.Errorf("expect *UpdateJobPriorityInput type, got %T", params)
211	}
212	cpy := *input
213	return &cpy, nil
214}
215func backFillUpdateJobPriorityAccountID(input interface{}, v string) error {
216	in := input.(*UpdateJobPriorityInput)
217	if in.AccountId != nil {
218		if !strings.EqualFold(*in.AccountId, v) {
219			return fmt.Errorf("error backfilling account id")
220		}
221		return nil
222	}
223	in.AccountId = &v
224	return nil
225}
226func addUpdateJobPriorityUpdateEndpoint(stack *middleware.Stack, options Options) error {
227	return s3controlcust.UpdateEndpoint(stack, s3controlcust.UpdateEndpointOptions{
228		Accessor: s3controlcust.UpdateEndpointParameterAccessor{GetARNInput: nopGetARNAccessor,
229			BackfillAccountID: nopBackfillAccountIDAccessor,
230			GetOutpostIDInput: nopGetOutpostIDFromInput,
231			UpdateARNField:    nopSetARNAccessor,
232			CopyInput:         copyUpdateJobPriorityInputForUpdateEndpoint,
233		},
234		EndpointResolver:        options.EndpointResolver,
235		EndpointResolverOptions: options.EndpointOptions,
236		UseDualstack:            options.UseDualstack,
237		UseARNRegion:            options.UseARNRegion,
238	})
239}
240