{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.WorkSpaces.CreateIPGroup
(
createIPGroup
, CreateIPGroup
, cigGroupDesc
, cigUserRules
, cigGroupName
, createIPGroupResponse
, CreateIPGroupResponse
, cigrsGroupId
, cigrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.WorkSpaces.Types
import Network.AWS.WorkSpaces.Types.Product
data CreateIPGroup = CreateIPGroup'
{ _cigGroupDesc :: !(Maybe Text)
, _cigUserRules :: !(Maybe [IPRuleItem])
, _cigGroupName :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createIPGroup
:: Text
-> CreateIPGroup
createIPGroup pGroupName_ =
CreateIPGroup'
{ _cigGroupDesc = Nothing
, _cigUserRules = Nothing
, _cigGroupName = pGroupName_
}
cigGroupDesc :: Lens' CreateIPGroup (Maybe Text)
cigGroupDesc = lens _cigGroupDesc (\ s a -> s{_cigGroupDesc = a})
cigUserRules :: Lens' CreateIPGroup [IPRuleItem]
cigUserRules = lens _cigUserRules (\ s a -> s{_cigUserRules = a}) . _Default . _Coerce
cigGroupName :: Lens' CreateIPGroup Text
cigGroupName = lens _cigGroupName (\ s a -> s{_cigGroupName = a})
instance AWSRequest CreateIPGroup where
type Rs CreateIPGroup = CreateIPGroupResponse
request = postJSON workSpaces
response
= receiveJSON
(\ s h x ->
CreateIPGroupResponse' <$>
(x .?> "GroupId") <*> (pure (fromEnum s)))
instance Hashable CreateIPGroup where
instance NFData CreateIPGroup where
instance ToHeaders CreateIPGroup where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("WorkspacesService.CreateIpGroup" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateIPGroup where
toJSON CreateIPGroup'{..}
= object
(catMaybes
[("GroupDesc" .=) <$> _cigGroupDesc,
("UserRules" .=) <$> _cigUserRules,
Just ("GroupName" .= _cigGroupName)])
instance ToPath CreateIPGroup where
toPath = const "/"
instance ToQuery CreateIPGroup where
toQuery = const mempty
data CreateIPGroupResponse = CreateIPGroupResponse'
{ _cigrsGroupId :: !(Maybe Text)
, _cigrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createIPGroupResponse
:: Int
-> CreateIPGroupResponse
createIPGroupResponse pResponseStatus_ =
CreateIPGroupResponse'
{_cigrsGroupId = Nothing, _cigrsResponseStatus = pResponseStatus_}
cigrsGroupId :: Lens' CreateIPGroupResponse (Maybe Text)
cigrsGroupId = lens _cigrsGroupId (\ s a -> s{_cigrsGroupId = a})
cigrsResponseStatus :: Lens' CreateIPGroupResponse Int
cigrsResponseStatus = lens _cigrsResponseStatus (\ s a -> s{_cigrsResponseStatus = a})
instance NFData CreateIPGroupResponse where