@@ -15,6 +15,7 @@ import (
15
15
16
16
"github.com/aws/aws-sdk-go-v2/aws"
17
17
"github.com/aws/aws-sdk-go-v2/service/s3"
18
+ "github.com/aws/smithy-go/middleware"
18
19
"github.com/go-openapi/swag"
19
20
20
21
"github.com/minio/minio-go/v7"
@@ -183,22 +184,23 @@ func TestS3UploadAndDownload(t *testing.T) {
183
184
}
184
185
}
185
186
186
- // func setHTTPHeaders() func(*middleware.Stack) error {
187
- // return func(stack *middleware.Stack) error {
188
- // return stack.Build.Add(middleware.BuildMiddlewareFunc("AddIfNoneMatchHeader", func(
189
- // ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler,
190
- // ) (
191
- // middleware.BuildOutput, middleware.Metadata, error,
192
- // ) {
193
- // if req, ok := in.Request.(*smithyhttp.Request); ok {
194
- // // Add the If-None-Match header
195
- // req.Header.Add("If-None-Match",req.)
196
- // }
197
- // // Continue with the next middleware handler
198
- // return next.HandleBuild(ctx, in)
199
- // }), middleware.Before)
200
- // }
201
- // }
187
+ func setHTTPHeaders (ifNoneMatch string ) func (* middleware.Stack ) error {
188
+ return func (stack * middleware.Stack ) error {
189
+ return stack .Build .Add (middleware .BuildMiddlewareFunc ("AddIfNoneMatchHeader" , func (
190
+ ctx context.Context , in middleware.BuildInput , next middleware.BuildHandler ,
191
+ ) (
192
+ middleware.BuildOutput , middleware.Metadata , error ,
193
+ ) {
194
+ if req , ok := in .Request .(* http.Request ); ok {
195
+ // Add the If-None-Match header
196
+ req .Header .Add ("If-None-Match" , ifNoneMatch )
197
+ }
198
+ // Continue with the next middleware handler
199
+ return next .HandleBuild (ctx , in )
200
+ }), middleware .Before )
201
+ }
202
+ }
203
+
202
204
func TestS3IfNoneMatch (t * testing.T ) {
203
205
const parallelism = 10
204
206
@@ -232,14 +234,19 @@ func TestS3IfNoneMatch(t *testing.T) {
232
234
defer wg .Done ()
233
235
for tc := range objects {
234
236
// Create the PutObject request
235
- _ , err := s3Client . PutObject ( ctx , & s3.PutObjectInput {
237
+ input := & s3.PutObjectInput {
236
238
Bucket : aws .String (repo ),
237
239
Key : aws .String (tc .Path ),
238
240
Body : strings .NewReader (tc .Content ),
241
+ }
242
+ _ , err := s3Client .PutObject (ctx , input , func (o * s3.Options ) {
243
+ o .APIOptions = append (o .APIOptions , setHTTPHeaders (tc .IfNoneMatch ))
239
244
})
240
-
241
- require .NoError (t , err , "Error uploading bucket" )
242
-
245
+ if tc .ExpectError {
246
+ require .Error (t , err , "was expecting an error" )
247
+ } else {
248
+ require .NoError (t , err , "wasn't expecting error" )
249
+ }
243
250
}
244
251
}()
245
252
}
0 commit comments