module Network.AWS.S3.GetBucketAcl
    (
    
      GetBucketAcl
    
    , getBucketAcl
    
    , gbaBucket
    
    , GetBucketAclResponse
    
    , getBucketAclResponse
    
    , gbarGrants
    , gbarOwner
    ) where
import Network.AWS.Prelude
import Network.AWS.Request.S3
import Network.AWS.S3.Types
import qualified GHC.Exts
newtype GetBucketAcl = GetBucketAcl
    { _gbaBucket :: Text
    } deriving (Eq, Ord, Show, Monoid, IsString)
getBucketAcl :: Text 
             -> GetBucketAcl
getBucketAcl p1 = GetBucketAcl
    { _gbaBucket = p1
    }
gbaBucket :: Lens' GetBucketAcl Text
gbaBucket = lens _gbaBucket (\s a -> s { _gbaBucket = a })
data GetBucketAclResponse = GetBucketAclResponse
    { _gbarGrants :: List "Grant" Grant
    , _gbarOwner  :: Maybe Owner
    } deriving (Eq, Show)
getBucketAclResponse :: GetBucketAclResponse
getBucketAclResponse = GetBucketAclResponse
    { _gbarOwner  = Nothing
    , _gbarGrants = mempty
    }
gbarGrants :: Lens' GetBucketAclResponse [Grant]
gbarGrants = lens _gbarGrants (\s a -> s { _gbarGrants = a }) . _List
gbarOwner :: Lens' GetBucketAclResponse (Maybe Owner)
gbarOwner = lens _gbarOwner (\s a -> s { _gbarOwner = a })
instance ToPath GetBucketAcl where
    toPath GetBucketAcl{..} = mconcat
        [ "/"
        , toText _gbaBucket
        ]
instance ToQuery GetBucketAcl where
    toQuery = const "acl"
instance ToHeaders GetBucketAcl
instance ToXMLRoot GetBucketAcl where
    toXMLRoot = const (namespaced ns "GetBucketAcl" [])
instance ToXML GetBucketAcl
instance AWSRequest GetBucketAcl where
    type Sv GetBucketAcl = S3
    type Rs GetBucketAcl = GetBucketAclResponse
    request  = get
    response = xmlResponse
instance FromXML GetBucketAclResponse where
    parseXML x = GetBucketAclResponse
        <$> x .@  "AccessControlList"
        <*> x .@? "Owner"