aws 0.21.1 → 0.22
raw patch · 16 files changed
+660/−11 lines, 16 filesdep +network-bsddep ~attoparsecdep ~base16-bytestringdep ~base64-bytestringPVP ok
version bump matches the API change (PVP)
Dependencies added: network-bsd
Dependency ranges changed: attoparsec, base16-bytestring, base64-bytestring, bytestring, http-client, network
API changes (from Hackage documentation)
+ Aws.DynamoDb.Core: instance Control.Monad.Fail.MonadFail Aws.DynamoDb.Core.Parser
+ Aws.Iam.Commands.AddUserToGroup: AddUserToGroup :: Text -> Text -> AddUserToGroup
+ Aws.Iam.Commands.AddUserToGroup: AddUserToGroupResponse :: AddUserToGroupResponse
+ Aws.Iam.Commands.AddUserToGroup: [autgGroupName] :: AddUserToGroup -> Text
+ Aws.Iam.Commands.AddUserToGroup: [autgUserName] :: AddUserToGroup -> Text
+ Aws.Iam.Commands.AddUserToGroup: data AddUserToGroup
+ Aws.Iam.Commands.AddUserToGroup: data AddUserToGroupResponse
+ Aws.Iam.Commands.AddUserToGroup: instance Aws.Core.AsMemoryResponse Aws.Iam.Commands.AddUserToGroup.AddUserToGroupResponse
+ Aws.Iam.Commands.AddUserToGroup: instance Aws.Core.ResponseConsumer Aws.Iam.Commands.AddUserToGroup.AddUserToGroup Aws.Iam.Commands.AddUserToGroup.AddUserToGroupResponse
+ Aws.Iam.Commands.AddUserToGroup: instance Aws.Core.SignQuery Aws.Iam.Commands.AddUserToGroup.AddUserToGroup
+ Aws.Iam.Commands.AddUserToGroup: instance Aws.Core.Transaction Aws.Iam.Commands.AddUserToGroup.AddUserToGroup Aws.Iam.Commands.AddUserToGroup.AddUserToGroupResponse
+ Aws.Iam.Commands.AddUserToGroup: instance GHC.Classes.Eq Aws.Iam.Commands.AddUserToGroup.AddUserToGroup
+ Aws.Iam.Commands.AddUserToGroup: instance GHC.Classes.Eq Aws.Iam.Commands.AddUserToGroup.AddUserToGroupResponse
+ Aws.Iam.Commands.AddUserToGroup: instance GHC.Classes.Ord Aws.Iam.Commands.AddUserToGroup.AddUserToGroup
+ Aws.Iam.Commands.AddUserToGroup: instance GHC.Classes.Ord Aws.Iam.Commands.AddUserToGroup.AddUserToGroupResponse
+ Aws.Iam.Commands.AddUserToGroup: instance GHC.Show.Show Aws.Iam.Commands.AddUserToGroup.AddUserToGroup
+ Aws.Iam.Commands.AddUserToGroup: instance GHC.Show.Show Aws.Iam.Commands.AddUserToGroup.AddUserToGroupResponse
+ Aws.Iam.Commands.CreateGroup: CreateGroup :: Text -> Maybe Text -> CreateGroup
+ Aws.Iam.Commands.CreateGroup: CreateGroupResponse :: Group -> CreateGroupResponse
+ Aws.Iam.Commands.CreateGroup: Group :: Text -> UTCTime -> Text -> Text -> Text -> Group
+ Aws.Iam.Commands.CreateGroup: [cgGroupName] :: CreateGroup -> Text
+ Aws.Iam.Commands.CreateGroup: [cgPath] :: CreateGroup -> Maybe Text
+ Aws.Iam.Commands.CreateGroup: [groupArn] :: Group -> Text
+ Aws.Iam.Commands.CreateGroup: [groupCreateDate] :: Group -> UTCTime
+ Aws.Iam.Commands.CreateGroup: [groupGroupId] :: Group -> Text
+ Aws.Iam.Commands.CreateGroup: [groupGroupName] :: Group -> Text
+ Aws.Iam.Commands.CreateGroup: [groupPath] :: Group -> Text
+ Aws.Iam.Commands.CreateGroup: data CreateGroup
+ Aws.Iam.Commands.CreateGroup: data CreateGroupResponse
+ Aws.Iam.Commands.CreateGroup: data Group
+ Aws.Iam.Commands.CreateGroup: instance Aws.Core.AsMemoryResponse Aws.Iam.Commands.CreateGroup.CreateGroupResponse
+ Aws.Iam.Commands.CreateGroup: instance Aws.Core.ResponseConsumer Aws.Iam.Commands.CreateGroup.CreateGroup Aws.Iam.Commands.CreateGroup.CreateGroupResponse
+ Aws.Iam.Commands.CreateGroup: instance Aws.Core.SignQuery Aws.Iam.Commands.CreateGroup.CreateGroup
+ Aws.Iam.Commands.CreateGroup: instance Aws.Core.Transaction Aws.Iam.Commands.CreateGroup.CreateGroup Aws.Iam.Commands.CreateGroup.CreateGroupResponse
+ Aws.Iam.Commands.CreateGroup: instance GHC.Classes.Eq Aws.Iam.Commands.CreateGroup.CreateGroup
+ Aws.Iam.Commands.CreateGroup: instance GHC.Classes.Eq Aws.Iam.Commands.CreateGroup.CreateGroupResponse
+ Aws.Iam.Commands.CreateGroup: instance GHC.Classes.Ord Aws.Iam.Commands.CreateGroup.CreateGroup
+ Aws.Iam.Commands.CreateGroup: instance GHC.Classes.Ord Aws.Iam.Commands.CreateGroup.CreateGroupResponse
+ Aws.Iam.Commands.CreateGroup: instance GHC.Show.Show Aws.Iam.Commands.CreateGroup.CreateGroup
+ Aws.Iam.Commands.CreateGroup: instance GHC.Show.Show Aws.Iam.Commands.CreateGroup.CreateGroupResponse
+ Aws.Iam.Commands.DeleteGroup: DeleteGroup :: Text -> DeleteGroup
+ Aws.Iam.Commands.DeleteGroup: DeleteGroupResponse :: DeleteGroupResponse
+ Aws.Iam.Commands.DeleteGroup: data DeleteGroup
+ Aws.Iam.Commands.DeleteGroup: data DeleteGroupResponse
+ Aws.Iam.Commands.DeleteGroup: instance Aws.Core.AsMemoryResponse Aws.Iam.Commands.DeleteGroup.DeleteGroupResponse
+ Aws.Iam.Commands.DeleteGroup: instance Aws.Core.ResponseConsumer Aws.Iam.Commands.DeleteGroup.DeleteGroup Aws.Iam.Commands.DeleteGroup.DeleteGroupResponse
+ Aws.Iam.Commands.DeleteGroup: instance Aws.Core.SignQuery Aws.Iam.Commands.DeleteGroup.DeleteGroup
+ Aws.Iam.Commands.DeleteGroup: instance Aws.Core.Transaction Aws.Iam.Commands.DeleteGroup.DeleteGroup Aws.Iam.Commands.DeleteGroup.DeleteGroupResponse
+ Aws.Iam.Commands.DeleteGroup: instance GHC.Classes.Eq Aws.Iam.Commands.DeleteGroup.DeleteGroup
+ Aws.Iam.Commands.DeleteGroup: instance GHC.Classes.Eq Aws.Iam.Commands.DeleteGroup.DeleteGroupResponse
+ Aws.Iam.Commands.DeleteGroup: instance GHC.Classes.Ord Aws.Iam.Commands.DeleteGroup.DeleteGroup
+ Aws.Iam.Commands.DeleteGroup: instance GHC.Classes.Ord Aws.Iam.Commands.DeleteGroup.DeleteGroupResponse
+ Aws.Iam.Commands.DeleteGroup: instance GHC.Show.Show Aws.Iam.Commands.DeleteGroup.DeleteGroup
+ Aws.Iam.Commands.DeleteGroup: instance GHC.Show.Show Aws.Iam.Commands.DeleteGroup.DeleteGroupResponse
+ Aws.Iam.Commands.DeleteGroupPolicy: DeleteGroupPolicy :: Text -> Text -> DeleteGroupPolicy
+ Aws.Iam.Commands.DeleteGroupPolicy: DeleteGroupPolicyResponse :: DeleteGroupPolicyResponse
+ Aws.Iam.Commands.DeleteGroupPolicy: [dgpGroupName] :: DeleteGroupPolicy -> Text
+ Aws.Iam.Commands.DeleteGroupPolicy: [dgpPolicyName] :: DeleteGroupPolicy -> Text
+ Aws.Iam.Commands.DeleteGroupPolicy: data DeleteGroupPolicy
+ Aws.Iam.Commands.DeleteGroupPolicy: data DeleteGroupPolicyResponse
+ Aws.Iam.Commands.DeleteGroupPolicy: instance Aws.Core.AsMemoryResponse Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicyResponse
+ Aws.Iam.Commands.DeleteGroupPolicy: instance Aws.Core.ResponseConsumer Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicy Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicyResponse
+ Aws.Iam.Commands.DeleteGroupPolicy: instance Aws.Core.SignQuery Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicy
+ Aws.Iam.Commands.DeleteGroupPolicy: instance Aws.Core.Transaction Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicy Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicyResponse
+ Aws.Iam.Commands.DeleteGroupPolicy: instance GHC.Classes.Eq Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicy
+ Aws.Iam.Commands.DeleteGroupPolicy: instance GHC.Classes.Eq Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicyResponse
+ Aws.Iam.Commands.DeleteGroupPolicy: instance GHC.Classes.Ord Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicy
+ Aws.Iam.Commands.DeleteGroupPolicy: instance GHC.Classes.Ord Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicyResponse
+ Aws.Iam.Commands.DeleteGroupPolicy: instance GHC.Show.Show Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicy
+ Aws.Iam.Commands.DeleteGroupPolicy: instance GHC.Show.Show Aws.Iam.Commands.DeleteGroupPolicy.DeleteGroupPolicyResponse
+ Aws.Iam.Commands.GetGroupPolicy: GetGroupPolicy :: Text -> Text -> GetGroupPolicy
+ Aws.Iam.Commands.GetGroupPolicy: GetGroupPolicyResponse :: Text -> Text -> Text -> GetGroupPolicyResponse
+ Aws.Iam.Commands.GetGroupPolicy: [ggpGroupName] :: GetGroupPolicy -> Text
+ Aws.Iam.Commands.GetGroupPolicy: [ggpPolicyName] :: GetGroupPolicy -> Text
+ Aws.Iam.Commands.GetGroupPolicy: [ggprGroupName] :: GetGroupPolicyResponse -> Text
+ Aws.Iam.Commands.GetGroupPolicy: [ggprPolicyDocument] :: GetGroupPolicyResponse -> Text
+ Aws.Iam.Commands.GetGroupPolicy: [ggprPolicyName] :: GetGroupPolicyResponse -> Text
+ Aws.Iam.Commands.GetGroupPolicy: data GetGroupPolicy
+ Aws.Iam.Commands.GetGroupPolicy: data GetGroupPolicyResponse
+ Aws.Iam.Commands.GetGroupPolicy: instance Aws.Core.AsMemoryResponse Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicyResponse
+ Aws.Iam.Commands.GetGroupPolicy: instance Aws.Core.ResponseConsumer Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicy Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicyResponse
+ Aws.Iam.Commands.GetGroupPolicy: instance Aws.Core.SignQuery Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicy
+ Aws.Iam.Commands.GetGroupPolicy: instance Aws.Core.Transaction Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicy Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicyResponse
+ Aws.Iam.Commands.GetGroupPolicy: instance GHC.Classes.Eq Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicy
+ Aws.Iam.Commands.GetGroupPolicy: instance GHC.Classes.Eq Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicyResponse
+ Aws.Iam.Commands.GetGroupPolicy: instance GHC.Classes.Ord Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicy
+ Aws.Iam.Commands.GetGroupPolicy: instance GHC.Classes.Ord Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicyResponse
+ Aws.Iam.Commands.GetGroupPolicy: instance GHC.Show.Show Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicy
+ Aws.Iam.Commands.GetGroupPolicy: instance GHC.Show.Show Aws.Iam.Commands.GetGroupPolicy.GetGroupPolicyResponse
+ Aws.Iam.Commands.ListGroupPolicies: ListGroupPolicies :: Text -> Maybe Text -> Maybe Integer -> ListGroupPolicies
+ Aws.Iam.Commands.ListGroupPolicies: ListGroupPoliciesResponse :: [Text] -> Bool -> Maybe Text -> ListGroupPoliciesResponse
+ Aws.Iam.Commands.ListGroupPolicies: [lgpGroupName] :: ListGroupPolicies -> Text
+ Aws.Iam.Commands.ListGroupPolicies: [lgpMarker] :: ListGroupPolicies -> Maybe Text
+ Aws.Iam.Commands.ListGroupPolicies: [lgpMaxItems] :: ListGroupPolicies -> Maybe Integer
+ Aws.Iam.Commands.ListGroupPolicies: [lgprIsTruncated] :: ListGroupPoliciesResponse -> Bool
+ Aws.Iam.Commands.ListGroupPolicies: [lgprMarker] :: ListGroupPoliciesResponse -> Maybe Text
+ Aws.Iam.Commands.ListGroupPolicies: [lgprPolicyNames] :: ListGroupPoliciesResponse -> [Text]
+ Aws.Iam.Commands.ListGroupPolicies: data ListGroupPolicies
+ Aws.Iam.Commands.ListGroupPolicies: data ListGroupPoliciesResponse
+ Aws.Iam.Commands.ListGroupPolicies: instance Aws.Core.AsMemoryResponse Aws.Iam.Commands.ListGroupPolicies.ListGroupPoliciesResponse
+ Aws.Iam.Commands.ListGroupPolicies: instance Aws.Core.IteratedTransaction Aws.Iam.Commands.ListGroupPolicies.ListGroupPolicies Aws.Iam.Commands.ListGroupPolicies.ListGroupPoliciesResponse
+ Aws.Iam.Commands.ListGroupPolicies: instance Aws.Core.ResponseConsumer Aws.Iam.Commands.ListGroupPolicies.ListGroupPolicies Aws.Iam.Commands.ListGroupPolicies.ListGroupPoliciesResponse
+ Aws.Iam.Commands.ListGroupPolicies: instance Aws.Core.SignQuery Aws.Iam.Commands.ListGroupPolicies.ListGroupPolicies
+ Aws.Iam.Commands.ListGroupPolicies: instance Aws.Core.Transaction Aws.Iam.Commands.ListGroupPolicies.ListGroupPolicies Aws.Iam.Commands.ListGroupPolicies.ListGroupPoliciesResponse
+ Aws.Iam.Commands.ListGroupPolicies: instance GHC.Classes.Eq Aws.Iam.Commands.ListGroupPolicies.ListGroupPolicies
+ Aws.Iam.Commands.ListGroupPolicies: instance GHC.Classes.Eq Aws.Iam.Commands.ListGroupPolicies.ListGroupPoliciesResponse
+ Aws.Iam.Commands.ListGroupPolicies: instance GHC.Classes.Ord Aws.Iam.Commands.ListGroupPolicies.ListGroupPolicies
+ Aws.Iam.Commands.ListGroupPolicies: instance GHC.Classes.Ord Aws.Iam.Commands.ListGroupPolicies.ListGroupPoliciesResponse
+ Aws.Iam.Commands.ListGroupPolicies: instance GHC.Show.Show Aws.Iam.Commands.ListGroupPolicies.ListGroupPolicies
+ Aws.Iam.Commands.ListGroupPolicies: instance GHC.Show.Show Aws.Iam.Commands.ListGroupPolicies.ListGroupPoliciesResponse
+ Aws.Iam.Commands.ListGroups: Group :: Text -> UTCTime -> Text -> Text -> Text -> Group
+ Aws.Iam.Commands.ListGroups: ListGroups :: Maybe Text -> Maybe Text -> Maybe Integer -> ListGroups
+ Aws.Iam.Commands.ListGroups: ListGroupsResponse :: [Group] -> Bool -> Maybe Text -> ListGroupsResponse
+ Aws.Iam.Commands.ListGroups: [groupArn] :: Group -> Text
+ Aws.Iam.Commands.ListGroups: [groupCreateDate] :: Group -> UTCTime
+ Aws.Iam.Commands.ListGroups: [groupGroupId] :: Group -> Text
+ Aws.Iam.Commands.ListGroups: [groupGroupName] :: Group -> Text
+ Aws.Iam.Commands.ListGroups: [groupPath] :: Group -> Text
+ Aws.Iam.Commands.ListGroups: [lgMarker] :: ListGroups -> Maybe Text
+ Aws.Iam.Commands.ListGroups: [lgMaxItems] :: ListGroups -> Maybe Integer
+ Aws.Iam.Commands.ListGroups: [lgPathPrefix] :: ListGroups -> Maybe Text
+ Aws.Iam.Commands.ListGroups: [lgrGroups] :: ListGroupsResponse -> [Group]
+ Aws.Iam.Commands.ListGroups: [lgrIsTruncated] :: ListGroupsResponse -> Bool
+ Aws.Iam.Commands.ListGroups: [lgrMarker] :: ListGroupsResponse -> Maybe Text
+ Aws.Iam.Commands.ListGroups: data Group
+ Aws.Iam.Commands.ListGroups: data ListGroups
+ Aws.Iam.Commands.ListGroups: data ListGroupsResponse
+ Aws.Iam.Commands.ListGroups: instance Aws.Core.AsMemoryResponse Aws.Iam.Commands.ListGroups.ListGroupsResponse
+ Aws.Iam.Commands.ListGroups: instance Aws.Core.IteratedTransaction Aws.Iam.Commands.ListGroups.ListGroups Aws.Iam.Commands.ListGroups.ListGroupsResponse
+ Aws.Iam.Commands.ListGroups: instance Aws.Core.ResponseConsumer Aws.Iam.Commands.ListGroups.ListGroups Aws.Iam.Commands.ListGroups.ListGroupsResponse
+ Aws.Iam.Commands.ListGroups: instance Aws.Core.SignQuery Aws.Iam.Commands.ListGroups.ListGroups
+ Aws.Iam.Commands.ListGroups: instance Aws.Core.Transaction Aws.Iam.Commands.ListGroups.ListGroups Aws.Iam.Commands.ListGroups.ListGroupsResponse
+ Aws.Iam.Commands.ListGroups: instance GHC.Classes.Eq Aws.Iam.Commands.ListGroups.ListGroups
+ Aws.Iam.Commands.ListGroups: instance GHC.Classes.Eq Aws.Iam.Commands.ListGroups.ListGroupsResponse
+ Aws.Iam.Commands.ListGroups: instance GHC.Classes.Ord Aws.Iam.Commands.ListGroups.ListGroups
+ Aws.Iam.Commands.ListGroups: instance GHC.Classes.Ord Aws.Iam.Commands.ListGroups.ListGroupsResponse
+ Aws.Iam.Commands.ListGroups: instance GHC.Show.Show Aws.Iam.Commands.ListGroups.ListGroups
+ Aws.Iam.Commands.ListGroups: instance GHC.Show.Show Aws.Iam.Commands.ListGroups.ListGroupsResponse
+ Aws.Iam.Commands.PutGroupPolicy: PutGroupPolicy :: Text -> Text -> Text -> PutGroupPolicy
+ Aws.Iam.Commands.PutGroupPolicy: PutGroupPolicyResponse :: PutGroupPolicyResponse
+ Aws.Iam.Commands.PutGroupPolicy: [pgpGroupName] :: PutGroupPolicy -> Text
+ Aws.Iam.Commands.PutGroupPolicy: [pgpPolicyDocument] :: PutGroupPolicy -> Text
+ Aws.Iam.Commands.PutGroupPolicy: [pgpPolicyName] :: PutGroupPolicy -> Text
+ Aws.Iam.Commands.PutGroupPolicy: data PutGroupPolicy
+ Aws.Iam.Commands.PutGroupPolicy: data PutGroupPolicyResponse
+ Aws.Iam.Commands.PutGroupPolicy: instance Aws.Core.AsMemoryResponse Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicyResponse
+ Aws.Iam.Commands.PutGroupPolicy: instance Aws.Core.ResponseConsumer Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicy Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicyResponse
+ Aws.Iam.Commands.PutGroupPolicy: instance Aws.Core.SignQuery Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicy
+ Aws.Iam.Commands.PutGroupPolicy: instance Aws.Core.Transaction Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicy Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicyResponse
+ Aws.Iam.Commands.PutGroupPolicy: instance GHC.Classes.Eq Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicy
+ Aws.Iam.Commands.PutGroupPolicy: instance GHC.Classes.Eq Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicyResponse
+ Aws.Iam.Commands.PutGroupPolicy: instance GHC.Classes.Ord Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicy
+ Aws.Iam.Commands.PutGroupPolicy: instance GHC.Classes.Ord Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicyResponse
+ Aws.Iam.Commands.PutGroupPolicy: instance GHC.Show.Show Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicy
+ Aws.Iam.Commands.PutGroupPolicy: instance GHC.Show.Show Aws.Iam.Commands.PutGroupPolicy.PutGroupPolicyResponse
+ Aws.Iam.Commands.RemoveUserFromGroup: RemoveUserFromGroup :: Text -> Text -> RemoveUserFromGroup
+ Aws.Iam.Commands.RemoveUserFromGroup: RemoveUserFromGroupResponse :: RemoveUserFromGroupResponse
+ Aws.Iam.Commands.RemoveUserFromGroup: [rufgGroupName] :: RemoveUserFromGroup -> Text
+ Aws.Iam.Commands.RemoveUserFromGroup: [rufgUserName] :: RemoveUserFromGroup -> Text
+ Aws.Iam.Commands.RemoveUserFromGroup: data RemoveUserFromGroup
+ Aws.Iam.Commands.RemoveUserFromGroup: data RemoveUserFromGroupResponse
+ Aws.Iam.Commands.RemoveUserFromGroup: instance Aws.Core.AsMemoryResponse Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroupResponse
+ Aws.Iam.Commands.RemoveUserFromGroup: instance Aws.Core.ResponseConsumer Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroup Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroupResponse
+ Aws.Iam.Commands.RemoveUserFromGroup: instance Aws.Core.SignQuery Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroup
+ Aws.Iam.Commands.RemoveUserFromGroup: instance Aws.Core.Transaction Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroup Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroupResponse
+ Aws.Iam.Commands.RemoveUserFromGroup: instance GHC.Classes.Eq Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroup
+ Aws.Iam.Commands.RemoveUserFromGroup: instance GHC.Classes.Eq Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroupResponse
+ Aws.Iam.Commands.RemoveUserFromGroup: instance GHC.Classes.Ord Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroup
+ Aws.Iam.Commands.RemoveUserFromGroup: instance GHC.Classes.Ord Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroupResponse
+ Aws.Iam.Commands.RemoveUserFromGroup: instance GHC.Show.Show Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroup
+ Aws.Iam.Commands.RemoveUserFromGroup: instance GHC.Show.Show Aws.Iam.Commands.RemoveUserFromGroup.RemoveUserFromGroupResponse
+ Aws.Iam.Commands.UpdateGroup: UpdateGroup :: Text -> Maybe Text -> Maybe Text -> UpdateGroup
+ Aws.Iam.Commands.UpdateGroup: UpdateGroupResponse :: UpdateGroupResponse
+ Aws.Iam.Commands.UpdateGroup: [ugGroupName] :: UpdateGroup -> Text
+ Aws.Iam.Commands.UpdateGroup: [ugNewGroupName] :: UpdateGroup -> Maybe Text
+ Aws.Iam.Commands.UpdateGroup: [ugNewPath] :: UpdateGroup -> Maybe Text
+ Aws.Iam.Commands.UpdateGroup: data UpdateGroup
+ Aws.Iam.Commands.UpdateGroup: data UpdateGroupResponse
+ Aws.Iam.Commands.UpdateGroup: instance Aws.Core.AsMemoryResponse Aws.Iam.Commands.UpdateGroup.UpdateGroupResponse
+ Aws.Iam.Commands.UpdateGroup: instance Aws.Core.ResponseConsumer Aws.Iam.Commands.UpdateGroup.UpdateGroup Aws.Iam.Commands.UpdateGroup.UpdateGroupResponse
+ Aws.Iam.Commands.UpdateGroup: instance Aws.Core.SignQuery Aws.Iam.Commands.UpdateGroup.UpdateGroup
+ Aws.Iam.Commands.UpdateGroup: instance Aws.Core.Transaction Aws.Iam.Commands.UpdateGroup.UpdateGroup Aws.Iam.Commands.UpdateGroup.UpdateGroupResponse
+ Aws.Iam.Commands.UpdateGroup: instance GHC.Classes.Eq Aws.Iam.Commands.UpdateGroup.UpdateGroup
+ Aws.Iam.Commands.UpdateGroup: instance GHC.Classes.Eq Aws.Iam.Commands.UpdateGroup.UpdateGroupResponse
+ Aws.Iam.Commands.UpdateGroup: instance GHC.Classes.Ord Aws.Iam.Commands.UpdateGroup.UpdateGroup
+ Aws.Iam.Commands.UpdateGroup: instance GHC.Classes.Ord Aws.Iam.Commands.UpdateGroup.UpdateGroupResponse
+ Aws.Iam.Commands.UpdateGroup: instance GHC.Show.Show Aws.Iam.Commands.UpdateGroup.UpdateGroup
+ Aws.Iam.Commands.UpdateGroup: instance GHC.Show.Show Aws.Iam.Commands.UpdateGroup.UpdateGroupResponse
+ Aws.Iam.Core: Group :: Text -> UTCTime -> Text -> Text -> Text -> Group
+ Aws.Iam.Core: [groupArn] :: Group -> Text
+ Aws.Iam.Core: [groupCreateDate] :: Group -> UTCTime
+ Aws.Iam.Core: [groupGroupId] :: Group -> Text
+ Aws.Iam.Core: [groupGroupName] :: Group -> Text
+ Aws.Iam.Core: [groupPath] :: Group -> Text
+ Aws.Iam.Core: data Group
+ Aws.Iam.Core: instance GHC.Classes.Eq Aws.Iam.Core.Group
+ Aws.Iam.Core: instance GHC.Classes.Ord Aws.Iam.Core.Group
+ Aws.Iam.Core: instance GHC.Show.Show Aws.Iam.Core.Group
+ Aws.Iam.Core: parseGroup :: MonadThrow m => Cursor -> m Group
+ Aws.S3.Commands.PutObject: [porETag] :: PutObjectResponse -> Text
- Aws.S3.Commands.PutObject: PutObjectResponse :: Maybe Text -> PutObjectResponse
+ Aws.S3.Commands.PutObject: PutObjectResponse :: Maybe Text -> Text -> PutObjectResponse
Files
- Aws/DynamoDb/Core.hs +13/−1
- Aws/Iam/Commands.hs +21/−1
- Aws/Iam/Commands/AddUserToGroup.hs +47/−0
- Aws/Iam/Commands/CreateGroup.hs +53/−0
- Aws/Iam/Commands/DeleteGroup.hs +37/−0
- Aws/Iam/Commands/DeleteGroupPolicy.hs +47/−0
- Aws/Iam/Commands/GetGroupPolicy.hs +72/−0
- Aws/Iam/Commands/ListGroupPolicies.hs +71/−0
- Aws/Iam/Commands/ListGroups.hs +76/−0
- Aws/Iam/Commands/PutGroupPolicy.hs +51/−0
- Aws/Iam/Commands/RemoveUserFromGroup.hs +47/−0
- Aws/Iam/Commands/UpdateGroup.hs +53/−0
- Aws/Iam/Core.hs +34/−0
- Aws/S3/Commands/PutObject.hs +6/−4
- CHANGELOG.md +10/−0
- aws.cabal +22/−5
Aws/DynamoDb/Core.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}@@ -119,6 +120,9 @@ import Control.Applicative import qualified Control.Exception as C import Control.Monad+#if MIN_VERSION_base(4,9,0)+import qualified Control.Monad.Fail as Fail+#endif import Control.Monad.Trans import Control.Monad.Trans.Resource (throwM) import qualified Crypto.Hash as CH@@ -1250,9 +1254,17 @@ {-# INLINE (>>=) #-} return a = Parser $ \_kf ks -> ks a {-# INLINE return #-}+#if !(MIN_VERSION_base(4,13,0)) fail msg = Parser $ \kf _ks -> kf msg {-# INLINE fail #-}+#endif +#if MIN_VERSION_base(4,9,0)+instance Fail.MonadFail Parser where+ fail msg = Parser $ \kf _ks -> kf msg+ {-# INLINE fail #-}+#endif+ instance Functor Parser where fmap f m = Parser $ \kf ks -> let ks' a = ks (f a) in runParser m kf ks'@@ -1382,7 +1394,7 @@ parseAttr k m = case M.lookup k m of Nothing -> fail ("Key " Sem.<> T.unpack k Sem.<> " not found")- Just (DMap dv) -> either (fail "...") return $ fromItem dv+ Just (DMap dv) -> either (const (fail "...")) return $ fromItem dv _ -> fail ("Key " Sem.<> T.unpack k Sem.<> " is not a map!") -------------------------------------------------------------------------------
Aws/Iam/Commands.hs view
@@ -1,31 +1,51 @@ module Aws.Iam.Commands- ( module Aws.Iam.Commands.CreateAccessKey+ ( module Aws.Iam.Commands.AddUserToGroup+ , module Aws.Iam.Commands.CreateAccessKey+ , module Aws.Iam.Commands.CreateGroup , module Aws.Iam.Commands.CreateUser , module Aws.Iam.Commands.DeleteAccessKey+ , module Aws.Iam.Commands.DeleteGroup+ , module Aws.Iam.Commands.DeleteGroupPolicy , module Aws.Iam.Commands.DeleteUser , module Aws.Iam.Commands.DeleteUserPolicy+ , module Aws.Iam.Commands.GetGroupPolicy , module Aws.Iam.Commands.GetUser , module Aws.Iam.Commands.GetUserPolicy , module Aws.Iam.Commands.ListAccessKeys , module Aws.Iam.Commands.ListMfaDevices+ , module Aws.Iam.Commands.ListGroupPolicies+ , module Aws.Iam.Commands.ListGroups , module Aws.Iam.Commands.ListUserPolicies , module Aws.Iam.Commands.ListUsers+ , module Aws.Iam.Commands.PutGroupPolicy , module Aws.Iam.Commands.PutUserPolicy+ , module Aws.Iam.Commands.RemoveUserFromGroup , module Aws.Iam.Commands.UpdateAccessKey+ , module Aws.Iam.Commands.UpdateGroup , module Aws.Iam.Commands.UpdateUser ) where +import Aws.Iam.Commands.AddUserToGroup import Aws.Iam.Commands.CreateAccessKey+import Aws.Iam.Commands.CreateGroup import Aws.Iam.Commands.CreateUser import Aws.Iam.Commands.DeleteAccessKey+import Aws.Iam.Commands.DeleteGroup+import Aws.Iam.Commands.DeleteGroupPolicy import Aws.Iam.Commands.DeleteUser import Aws.Iam.Commands.DeleteUserPolicy+import Aws.Iam.Commands.GetGroupPolicy import Aws.Iam.Commands.GetUser import Aws.Iam.Commands.GetUserPolicy import Aws.Iam.Commands.ListAccessKeys import Aws.Iam.Commands.ListMfaDevices+import Aws.Iam.Commands.ListGroupPolicies+import Aws.Iam.Commands.ListGroups import Aws.Iam.Commands.ListUserPolicies import Aws.Iam.Commands.ListUsers+import Aws.Iam.Commands.PutGroupPolicy import Aws.Iam.Commands.PutUserPolicy+import Aws.Iam.Commands.RemoveUserFromGroup import Aws.Iam.Commands.UpdateAccessKey+import Aws.Iam.Commands.UpdateGroup import Aws.Iam.Commands.UpdateUser
+ Aws/Iam/Commands/AddUserToGroup.hs view
@@ -0,0 +1,47 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-}+module Aws.Iam.Commands.AddUserToGroup+ ( AddUserToGroup(..)+ , AddUserToGroupResponse(..)+ ) where++import Aws.Core+import Aws.Iam.Core+import Aws.Iam.Internal+import Data.Text (Text)+import Data.Typeable++-- | Adds the specified user to the specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_AddUserToGroup.html>+data AddUserToGroup+ = AddUserToGroup {+ autgGroupName :: Text+ -- ^ Name of the group to update.+ , autgUserName :: Text+ -- ^ The of the user to add.+ }+ deriving (Eq, Ord, Show, Typeable)++instance SignQuery AddUserToGroup where+ type ServiceConfiguration AddUserToGroup = IamConfiguration+ signQuery AddUserToGroup{..}+ = iamAction "AddUserToGroup" [+ ("GroupName" , autgGroupName)+ , ("UserName" , autgUserName)+ ]++data AddUserToGroupResponse = AddUserToGroupResponse+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer AddUserToGroup AddUserToGroupResponse where+ type ResponseMetadata AddUserToGroupResponse = IamMetadata+ responseConsumer _ _+ = iamResponseConsumer (const $ return AddUserToGroupResponse)++instance Transaction AddUserToGroup AddUserToGroupResponse++instance AsMemoryResponse AddUserToGroupResponse where+ type MemoryResponse AddUserToGroupResponse = AddUserToGroupResponse+ loadToMemory = return
+ Aws/Iam/Commands/CreateGroup.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-}+module Aws.Iam.Commands.CreateGroup+ ( CreateGroup(..)+ , CreateGroupResponse(..)+ , Group(..)+ ) where++import Aws.Core+import Aws.Iam.Core+import Aws.Iam.Internal+import Control.Applicative+import Data.Text (Text)+import Data.Typeable+import Prelude++-- | Creates a new group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateGroup.html>+data CreateGroup+ = CreateGroup {+ cgGroupName :: Text+ -- ^ Name of the new group+ , cgPath :: Maybe Text+ -- ^ Path under which the group will be created. Defaults to @/@ if+ -- omitted.+ }+ deriving (Eq, Ord, Show, Typeable)++instance SignQuery CreateGroup where+ type ServiceConfiguration CreateGroup = IamConfiguration+ signQuery CreateGroup{..}+ = iamAction' "CreateGroup" [+ Just ("GroupName", cgGroupName)+ , ("Path",) <$> cgPath+ ]++data CreateGroupResponse = CreateGroupResponse Group+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer CreateGroup CreateGroupResponse where+ type ResponseMetadata CreateGroupResponse = IamMetadata+ responseConsumer _ _+ = iamResponseConsumer $+ fmap CreateGroupResponse . parseGroup++instance Transaction CreateGroup CreateGroupResponse++instance AsMemoryResponse CreateGroupResponse where+ type MemoryResponse CreateGroupResponse = CreateGroupResponse+ loadToMemory = return
+ Aws/Iam/Commands/DeleteGroup.hs view
@@ -0,0 +1,37 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeFamilies #-}+module Aws.Iam.Commands.DeleteGroup+ ( DeleteGroup(..)+ , DeleteGroupResponse(..)+ ) where++import Aws.Core+import Aws.Iam.Core+import Aws.Iam.Internal+import Data.Text (Text)+import Data.Typeable++-- | Deletes the specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroup.html>+data DeleteGroup = DeleteGroup Text+ deriving (Eq, Ord, Show, Typeable)++instance SignQuery DeleteGroup where+ type ServiceConfiguration DeleteGroup = IamConfiguration+ signQuery (DeleteGroup groupName)+ = iamAction "DeleteGroup" [("GroupName", groupName)]++data DeleteGroupResponse = DeleteGroupResponse+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer DeleteGroup DeleteGroupResponse where+ type ResponseMetadata DeleteGroupResponse = IamMetadata+ responseConsumer _ _+ = iamResponseConsumer (const $ return DeleteGroupResponse)++instance Transaction DeleteGroup DeleteGroupResponse++instance AsMemoryResponse DeleteGroupResponse where+ type MemoryResponse DeleteGroupResponse = DeleteGroupResponse+ loadToMemory = return
+ Aws/Iam/Commands/DeleteGroupPolicy.hs view
@@ -0,0 +1,47 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-}+module Aws.Iam.Commands.DeleteGroupPolicy+ ( DeleteGroupPolicy(..)+ , DeleteGroupPolicyResponse(..)+ ) where++import Aws.Core+import Aws.Iam.Core+import Aws.Iam.Internal+import Data.Text (Text)+import Data.Typeable++-- | Deletes the specified policy associated with the specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroupPolicy.html>+data DeleteGroupPolicy+ = DeleteGroupPolicy {+ dgpPolicyName :: Text+ -- ^ Name of the policy to be deleted.+ , dgpGroupName :: Text+ -- ^ Name of the group with whom the policy is associated.+ }+ deriving (Eq, Ord, Show, Typeable)++instance SignQuery DeleteGroupPolicy where+ type ServiceConfiguration DeleteGroupPolicy = IamConfiguration+ signQuery DeleteGroupPolicy{..}+ = iamAction "DeleteGroupPolicy" [+ ("PolicyName", dgpPolicyName)+ , ("GroupName", dgpGroupName)+ ]++data DeleteGroupPolicyResponse = DeleteGroupPolicyResponse+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer DeleteGroupPolicy DeleteGroupPolicyResponse where+ type ResponseMetadata DeleteGroupPolicyResponse = IamMetadata+ responseConsumer _ _ =+ iamResponseConsumer (const $ return DeleteGroupPolicyResponse)++instance Transaction DeleteGroupPolicy DeleteGroupPolicyResponse++instance AsMemoryResponse DeleteGroupPolicyResponse where+ type MemoryResponse DeleteGroupPolicyResponse = DeleteGroupPolicyResponse+ loadToMemory = return
+ Aws/Iam/Commands/GetGroupPolicy.hs view
@@ -0,0 +1,72 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-}+module Aws.Iam.Commands.GetGroupPolicy+ ( GetGroupPolicy(..)+ , GetGroupPolicyResponse(..)+ ) where++import Aws.Core+import Aws.Iam.Core+import Aws.Iam.Internal+import Control.Applicative+import Data.Text (Text)+import qualified Data.Text as Text+import qualified Data.Text.Encoding as Text+import Data.Typeable+import qualified Network.HTTP.Types as HTTP+import Text.XML.Cursor (($//))+import Prelude++-- | Retreives the specified policy document for the specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroupPolicy.html>+data GetGroupPolicy+ = GetGroupPolicy {+ ggpPolicyName :: Text+ -- ^ Name of the policy.+ , ggpGroupName :: Text+ -- ^ Name of the group with whom the policy is associated.+ }+ deriving (Eq, Ord, Show, Typeable)++instance SignQuery GetGroupPolicy where+ type ServiceConfiguration GetGroupPolicy = IamConfiguration+ signQuery GetGroupPolicy{..}+ = iamAction "GetGroupPolicy" [+ ("PolicyName", ggpPolicyName)+ , ("GroupName", ggpGroupName)+ ]++data GetGroupPolicyResponse+ = GetGroupPolicyResponse {+ ggprPolicyDocument :: Text+ -- ^ The policy document.+ , ggprPolicyName :: Text+ -- ^ Name of the policy.+ , ggprGroupName :: Text+ -- ^ Name of the group with whom the policy is associated.+ }+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer GetGroupPolicy GetGroupPolicyResponse where+ type ResponseMetadata GetGroupPolicyResponse = IamMetadata+ responseConsumer _ _+ = iamResponseConsumer $ \cursor -> do+ let attr name = force ("Missing " ++ Text.unpack name) $+ cursor $// elContent name+ ggprPolicyDocument <- decodePolicy <$>+ attr "PolicyDocument"+ ggprPolicyName <- attr "PolicyName"+ ggprGroupName <- attr "GroupName"+ return GetGroupPolicyResponse{..}+ where+ decodePolicy = Text.decodeUtf8 . HTTP.urlDecode False+ . Text.encodeUtf8+++instance Transaction GetGroupPolicy GetGroupPolicyResponse++instance AsMemoryResponse GetGroupPolicyResponse where+ type MemoryResponse GetGroupPolicyResponse = GetGroupPolicyResponse+ loadToMemory = return
+ Aws/Iam/Commands/ListGroupPolicies.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-}+module Aws.Iam.Commands.ListGroupPolicies+ ( ListGroupPolicies(..)+ , ListGroupPoliciesResponse(..)+ ) where++import Aws.Core+import Aws.Iam.Core+import Aws.Iam.Internal+import Data.Text (Text)+import Data.Typeable+import Text.XML.Cursor (content, laxElement, ($//), (&/))++-- | Lists the group policies associated with the specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupPolicies.html>+data ListGroupPolicies+ = ListGroupPolicies {+ lgpGroupName :: Text+ -- ^ Policies associated with this group will be listed.+ , lgpMarker :: Maybe Text+ -- ^ Used for paginating requests. Marks the position of the last+ -- request.+ , lgpMaxItems :: Maybe Integer+ -- ^ Used for paginating requests. Specifies the maximum number of items+ -- to return in the response. Defaults to 100.+ }+ deriving (Eq, Ord, Show, Typeable)++instance SignQuery ListGroupPolicies where+ type ServiceConfiguration ListGroupPolicies = IamConfiguration+ signQuery ListGroupPolicies{..}+ = iamAction' "ListGroupPolicies" $ [+ Just ("GroupName", lgpGroupName)+ ] <> markedIter lgpMarker lgpMaxItems++data ListGroupPoliciesResponse+ = ListGroupPoliciesResponse {+ lgprPolicyNames :: [Text]+ -- ^ List of policy names.+ , lgprIsTruncated :: Bool+ -- ^ @True@ if the request was truncated because of too many items.+ , lgprMarker :: Maybe Text+ -- ^ Marks the position at which the request was truncated. This value+ -- must be passed with the next request to continue listing from the+ -- last position.+ }+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer ListGroupPolicies ListGroupPoliciesResponse where+ type ResponseMetadata ListGroupPoliciesResponse = IamMetadata+ responseConsumer _ _+ = iamResponseConsumer $ \cursor -> do+ (lgprIsTruncated, lgprMarker) <- markedIterResponse cursor+ let lgprPolicyNames = cursor $// laxElement "member" &/ content+ return ListGroupPoliciesResponse{..}++instance Transaction ListGroupPolicies ListGroupPoliciesResponse++instance IteratedTransaction ListGroupPolicies ListGroupPoliciesResponse where+ nextIteratedRequest request response+ = case lgprMarker response of+ Nothing -> Nothing+ Just marker -> Just $ request { lgpMarker = Just marker }++instance AsMemoryResponse ListGroupPoliciesResponse where+ type MemoryResponse ListGroupPoliciesResponse = ListGroupPoliciesResponse+ loadToMemory = return
+ Aws/Iam/Commands/ListGroups.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-}+module Aws.Iam.Commands.ListGroups+ ( ListGroups(..)+ , ListGroupsResponse(..)+ , Group(..)+ ) where++import Aws.Core+import Aws.Iam.Core+import Aws.Iam.Internal+import Control.Applicative+import Data.Text (Text)+import Data.Typeable+import Prelude+import Text.XML.Cursor (laxElement, ($//), (&|))++-- | Lists groups that have the specified path prefix.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroups.html>+data ListGroups+ = ListGroups {+ lgPathPrefix :: Maybe Text+ -- ^ Groups defined under this path will be listed. If omitted, defaults+ -- to @/@, which lists all groups.+ , lgMarker :: Maybe Text+ -- ^ Used for paginating requests. Marks the position of the last+ -- request.+ , lgMaxItems :: Maybe Integer+ -- ^ Used for paginating requests. Specifies the maximum number of items+ -- to return in the response. Defaults to 100.+ }+ deriving (Eq, Ord, Show, Typeable)++instance SignQuery ListGroups where+ type ServiceConfiguration ListGroups = IamConfiguration+ signQuery ListGroups{..}+ = iamAction' "ListGroups" $ [+ ("PathPrefix",) <$> lgPathPrefix+ ] <> markedIter lgMarker lgMaxItems++data ListGroupsResponse+ = ListGroupsResponse {+ lgrGroups :: [Group]+ -- ^ List of 'Group's.+ , lgrIsTruncated :: Bool+ -- ^ @True@ if the request was truncated because of too many items.+ , lgrMarker :: Maybe Text+ -- ^ Marks the position at which the request was truncated. This value+ -- must be passed with the next request to continue listing from the+ -- last position.+ }+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer ListGroups ListGroupsResponse where+ type ResponseMetadata ListGroupsResponse = IamMetadata+ responseConsumer _ _+ = iamResponseConsumer $ \cursor -> do+ (lgrIsTruncated, lgrMarker) <- markedIterResponse cursor+ lgrGroups <- sequence $+ cursor $// laxElement "member" &| parseGroup+ return ListGroupsResponse{..}++instance Transaction ListGroups ListGroupsResponse++instance IteratedTransaction ListGroups ListGroupsResponse where+ nextIteratedRequest request response+ = case lgrMarker response of+ Nothing -> Nothing+ Just marker -> Just $ request { lgMarker = Just marker }++instance AsMemoryResponse ListGroupsResponse where+ type MemoryResponse ListGroupsResponse = ListGroupsResponse+ loadToMemory = return
+ Aws/Iam/Commands/PutGroupPolicy.hs view
@@ -0,0 +1,51 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-}+module Aws.Iam.Commands.PutGroupPolicy+ ( PutGroupPolicy(..)+ , PutGroupPolicyResponse(..)+ ) where++import Aws.Core+import Aws.Iam.Core+import Aws.Iam.Internal+import Data.Text (Text)+import Data.Typeable++-- | Adds a policy document with the specified name, associated with the+-- specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_PutGroupPolicy.html>+data PutGroupPolicy+ = PutGroupPolicy {+ pgpPolicyDocument :: Text+ -- ^ The policy document.+ , pgpPolicyName :: Text+ -- ^ Name of the policy.+ , pgpGroupName :: Text+ -- ^ Name of the group with whom this policy is associated.+ }+ deriving (Eq, Ord, Show, Typeable)++instance SignQuery PutGroupPolicy where+ type ServiceConfiguration PutGroupPolicy = IamConfiguration+ signQuery PutGroupPolicy{..}+ = iamAction "PutGroupPolicy" [+ ("PolicyDocument", pgpPolicyDocument)+ , ("PolicyName" , pgpPolicyName)+ , ("GroupName" , pgpGroupName)+ ]++data PutGroupPolicyResponse = PutGroupPolicyResponse+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer PutGroupPolicy PutGroupPolicyResponse where+ type ResponseMetadata PutGroupPolicyResponse = IamMetadata+ responseConsumer _ _+ = iamResponseConsumer (const $ return PutGroupPolicyResponse)++instance Transaction PutGroupPolicy PutGroupPolicyResponse++instance AsMemoryResponse PutGroupPolicyResponse where+ type MemoryResponse PutGroupPolicyResponse = PutGroupPolicyResponse+ loadToMemory = return
+ Aws/Iam/Commands/RemoveUserFromGroup.hs view
@@ -0,0 +1,47 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-}+module Aws.Iam.Commands.RemoveUserFromGroup+ ( RemoveUserFromGroup(..)+ , RemoveUserFromGroupResponse(..)+ ) where++import Aws.Core+import Aws.Iam.Core+import Aws.Iam.Internal+import Data.Text (Text)+import Data.Typeable++-- | Removes the specified user from the specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html>+data RemoveUserFromGroup+ = RemoveUserFromGroup {+ rufgGroupName :: Text+ -- ^ Name of the group to update.+ , rufgUserName :: Text+ -- ^ The of the user to add.+ }+ deriving (Eq, Ord, Show, Typeable)++instance SignQuery RemoveUserFromGroup where+ type ServiceConfiguration RemoveUserFromGroup = IamConfiguration+ signQuery RemoveUserFromGroup{..}+ = iamAction "RemoveUserFromGroup" [+ ("GroupName" , rufgGroupName)+ , ("UserName" , rufgUserName)+ ]++data RemoveUserFromGroupResponse = RemoveUserFromGroupResponse+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer RemoveUserFromGroup RemoveUserFromGroupResponse where+ type ResponseMetadata RemoveUserFromGroupResponse = IamMetadata+ responseConsumer _ _+ = iamResponseConsumer (const $ return RemoveUserFromGroupResponse)++instance Transaction RemoveUserFromGroup RemoveUserFromGroupResponse++instance AsMemoryResponse RemoveUserFromGroupResponse where+ type MemoryResponse RemoveUserFromGroupResponse = RemoveUserFromGroupResponse+ loadToMemory = return
+ Aws/Iam/Commands/UpdateGroup.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-}+module Aws.Iam.Commands.UpdateGroup+ ( UpdateGroup(..)+ , UpdateGroupResponse(..)+ ) where++import Aws.Core+import Aws.Iam.Core+import Aws.Iam.Internal+import Control.Applicative+import Data.Text (Text)+import Data.Typeable+import Prelude++-- | Updates the name and/or path of the specified group.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateGroup.html>+data UpdateGroup+ = UpdateGroup {+ ugGroupName :: Text+ -- ^ Name of the group to be updated.+ , ugNewGroupName :: Maybe Text+ -- ^ New name for the group.+ , ugNewPath :: Maybe Text+ -- ^ New path to which the group will be moved.+ }+ deriving (Eq, Ord, Show, Typeable)++instance SignQuery UpdateGroup where+ type ServiceConfiguration UpdateGroup = IamConfiguration+ signQuery UpdateGroup{..}+ = iamAction' "UpdateGroup" [+ Just ("GroupName", ugGroupName)+ , ("NewGroupName",) <$> ugNewGroupName+ , ("NewPath",) <$> ugNewPath+ ]++data UpdateGroupResponse = UpdateGroupResponse+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer UpdateGroup UpdateGroupResponse where+ type ResponseMetadata UpdateGroupResponse = IamMetadata+ responseConsumer _ _+ = iamResponseConsumer (const $ return UpdateGroupResponse)++instance Transaction UpdateGroup UpdateGroupResponse++instance AsMemoryResponse UpdateGroupResponse where+ type MemoryResponse UpdateGroupResponse = UpdateGroupResponse+ loadToMemory = return
Aws/Iam/Core.hs view
@@ -14,6 +14,8 @@ , AccessKeyStatus(..) , User(..) , parseUser+ , Group(..)+ , parseGroup , MfaDevice(..) , parseMfaDevice ) where@@ -197,6 +199,38 @@ userUserId <- attr "UserId" userUserName <- attr "UserName" return User{..}+ where+ attr name = force ("Missing " ++ Text.unpack name) $+ cursor $// elContent name+++-- | The IAM @Group@ data type.+--+-- <http://docs.aws.amazon.com/IAM/latest/APIReference/API_Group.html>+data Group+ = Group {+ groupArn :: Text+ -- ^ ARN used to refer to this group.+ , groupCreateDate :: UTCTime+ -- ^ Date and time at which the group was created.+ , groupPath :: Text+ -- ^ Path under which the group was created.+ , groupGroupId :: Text+ -- ^ Unique identifier used to refer to this group. + , groupGroupName :: Text+ -- ^ Name of the group.+ }+ deriving (Eq, Ord, Show, Typeable)++-- | Parses the IAM @Group@ data type.+parseGroup :: MonadThrow m => Cu.Cursor -> m Group+parseGroup cursor = do+ groupArn <- attr "Arn"+ groupCreateDate <- attr "CreateDate" >>= parseDateTime . Text.unpack+ groupPath <- attr "Path"+ groupGroupId <- attr "GroupId"+ groupGroupName <- attr "GroupName"+ return Group{..} where attr name = force ("Missing " ++ Text.unpack name) $ cursor $// elContent name
Aws/S3/Commands/PutObject.hs view
@@ -39,9 +39,10 @@ putObject bucket obj body = PutObject obj bucket Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing body [] False False data PutObjectResponse- = PutObjectResponse {- porVersionId :: Maybe T.Text- }+ = PutObjectResponse+ { porVersionId :: Maybe T.Text+ , porETag :: T.Text+ } deriving (Show) -- | ServiceConfiguration: 'S3Configuration'@@ -78,7 +79,8 @@ type ResponseMetadata PutObjectResponse = S3Metadata responseConsumer _ _ = s3ResponseConsumer $ \resp -> do let vid = T.decodeUtf8 `fmap` lookup "x-amz-version-id" (HTTP.responseHeaders resp)- return $ PutObjectResponse vid+ let etag = fromMaybe "" $ T.decodeUtf8 `fmap` lookup "ETag" (HTTP.responseHeaders resp)+ return $ PutObjectResponse vid etag instance Transaction PutObject PutObjectResponse
CHANGELOG.md view
@@ -1,3 +1,13 @@+0.22 series+-----------++- 0.22+ - Support GHC 8.8+ - Support network-3+ - Support http-client 0.6++ - S3: add etag to PutObjectResponse+ - Add IAM group manipulation methods+ 0.21 series -----------
aws.cabal view
@@ -1,5 +1,5 @@ Name: aws-Version: 0.21.1+Version: 0.22 Synopsis: Amazon Web Services (AWS) for Haskell Description: Bindings for Amazon Web Services (AWS), with the aim of supporting all AWS services. To see a high level overview of the library, see the README at <https://github.com/aristidb/aws/blob/master/README.md>. Homepage: http://github.com/aristidb/aws@@ -19,7 +19,7 @@ Source-repository this type: git location: https://github.com/aristidb/aws.git- tag: 0.21.1+ tag: 0.22 Source-repository head type: git@@ -29,6 +29,10 @@ Description: Build the examples. Default: False +Flag NetworkBSD+ Description: Build with network-3.0 which split out network-bsd+ Default: True+ Library Exposed-modules: Aws@@ -49,19 +53,29 @@ Aws.Ec2.InstanceMetadata Aws.Iam Aws.Iam.Commands+ Aws.Iam.Commands.AddUserToGroup Aws.Iam.Commands.CreateAccessKey+ Aws.Iam.Commands.CreateGroup Aws.Iam.Commands.CreateUser Aws.Iam.Commands.DeleteAccessKey+ Aws.Iam.Commands.DeleteGroup+ Aws.Iam.Commands.DeleteGroupPolicy Aws.Iam.Commands.DeleteUser Aws.Iam.Commands.DeleteUserPolicy+ Aws.Iam.Commands.GetGroupPolicy Aws.Iam.Commands.GetUser Aws.Iam.Commands.GetUserPolicy Aws.Iam.Commands.ListAccessKeys Aws.Iam.Commands.ListMfaDevices+ Aws.Iam.Commands.ListGroupPolicies+ Aws.Iam.Commands.ListGroups Aws.Iam.Commands.ListUserPolicies Aws.Iam.Commands.ListUsers+ Aws.Iam.Commands.PutGroupPolicy Aws.Iam.Commands.PutUserPolicy+ Aws.Iam.Commands.RemoveUserFromGroup Aws.Iam.Commands.UpdateAccessKey+ Aws.Iam.Commands.UpdateGroup Aws.Iam.Commands.UpdateUser Aws.Iam.Core Aws.Iam.Internal@@ -139,7 +153,6 @@ monad-control >= 0.3, exceptions >= 0.8 && < 0.11, mtl == 2.*,- network == 2.*, old-locale == 1.*, resourcet >= 1.2 && < 1.3, safe >= 0.3 && < 0.4,@@ -152,6 +165,10 @@ utf8-string >= 0.3 && < 1.1, vector >= 0.10, xml-conduit >= 1.8 && <2.0+ if flag(NetworkBSD)+ Build-depends: network == 3.*, network-bsd == 2.8.*+ else+ Build-depends: network == 2.* if !impl(ghc >= 7.6) Build-depends: ghc-prim@@ -379,7 +396,7 @@ base == 4.*, bytestring >= 0.10, errors >= 2.0,- http-client >= 0.3 && < 0.6,+ http-client >= 0.3 && < 0.7, lifted-base >= 0.2, monad-control >= 0.3, mtl >= 2.1,@@ -447,7 +464,7 @@ lifted-base >= 0.2, monad-control >= 0.3, mtl >= 2.1,- http-client < 0.6,+ http-client < 0.7, http-client-tls < 0.5, http-types, resourcet,