@@ -372,13 +372,17 @@ data PutObjectOptions = PutObjectOptions
372372 pooUserMetadata :: [(Text, Text)],
373373 -- | Set number of worker threads used to upload an object.
374374 pooNumThreads :: Maybe Word,
375+ -- | Set the object access control policy
376+ pooAccessControlPolicy :: Maybe AccessControlPolicy,
375377 -- | Set object encryption parameters for the request.
376378 pooSSE :: Maybe SSE
377379 }
378380
381+data AccessControlPolicy = Private | PublicRead
382+
379383-- | Provide default `PutObjectOptions`.
380384defaultPutObjectOptions :: PutObjectOptions
381−defaultPutObjectOptions = PutObjectOptions Nothing Nothing Nothing Nothing Nothing Nothing [] Nothing Nothing
385+defaultPutObjectOptions = PutObjectOptions Nothing Nothing Nothing Nothing Nothing Nothing [] Nothing Nothing Nothing
382386
383387pooToHeaders :: PutObjectOptions -> [HT.Header]
384388pooToHeaders poo =
@@ -395,7 +399,8 @@ pooToHeaders poo =
395399 "content-disposition",
396400 "content-language",
397401 "cache-control",
398− "x-amz-storage-class"
402+ "x-amz-storage-class",
403+ "x-amz-acl"
399404 ]
400405 values =
401406 map
@@ -405,7 +410,10 @@ pooToHeaders poo =
405410 pooContentDisposition,
406411 pooContentLanguage,
407412 pooCacheControl,
408− pooStorageClass
413+ pooStorageClass,
414+ pooAccessControlPolicy >>> fmap (\x -> case x of
415+ Private -> "private"
416+ PublicRead -> "public-read")
409417 ]
410418
411419-- |