{-# 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.ResourceGroups.CreateGroup
(
createGroup
, CreateGroup
, cgDescription
, cgTags
, cgName
, cgResourceQuery
, createGroupResponse
, CreateGroupResponse
, cgrsGroup
, cgrsResourceQuery
, cgrsTags
, cgrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.ResourceGroups.Types
import Network.AWS.ResourceGroups.Types.Product
import Network.AWS.Response
data CreateGroup = CreateGroup'
{ _cgDescription :: !(Maybe Text)
, _cgTags :: !(Maybe (Map Text Text))
, _cgName :: !Text
, _cgResourceQuery :: !ResourceQuery
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createGroup
:: Text
-> ResourceQuery
-> CreateGroup
createGroup pName_ pResourceQuery_ =
CreateGroup'
{ _cgDescription = Nothing
, _cgTags = Nothing
, _cgName = pName_
, _cgResourceQuery = pResourceQuery_
}
cgDescription :: Lens' CreateGroup (Maybe Text)
cgDescription = lens _cgDescription (\ s a -> s{_cgDescription = a})
cgTags :: Lens' CreateGroup (HashMap Text Text)
cgTags = lens _cgTags (\ s a -> s{_cgTags = a}) . _Default . _Map
cgName :: Lens' CreateGroup Text
cgName = lens _cgName (\ s a -> s{_cgName = a})
cgResourceQuery :: Lens' CreateGroup ResourceQuery
cgResourceQuery = lens _cgResourceQuery (\ s a -> s{_cgResourceQuery = a})
instance AWSRequest CreateGroup where
type Rs CreateGroup = CreateGroupResponse
request = postJSON resourceGroups
response
= receiveJSON
(\ s h x ->
CreateGroupResponse' <$>
(x .?> "Group") <*> (x .?> "ResourceQuery") <*>
(x .?> "Tags" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable CreateGroup where
instance NFData CreateGroup where
instance ToHeaders CreateGroup where
toHeaders = const mempty
instance ToJSON CreateGroup where
toJSON CreateGroup'{..}
= object
(catMaybes
[("Description" .=) <$> _cgDescription,
("Tags" .=) <$> _cgTags, Just ("Name" .= _cgName),
Just ("ResourceQuery" .= _cgResourceQuery)])
instance ToPath CreateGroup where
toPath = const "/groups"
instance ToQuery CreateGroup where
toQuery = const mempty
data CreateGroupResponse = CreateGroupResponse'
{ _cgrsGroup :: !(Maybe Group)
, _cgrsResourceQuery :: !(Maybe ResourceQuery)
, _cgrsTags :: !(Maybe (Map Text Text))
, _cgrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createGroupResponse
:: Int
-> CreateGroupResponse
createGroupResponse pResponseStatus_ =
CreateGroupResponse'
{ _cgrsGroup = Nothing
, _cgrsResourceQuery = Nothing
, _cgrsTags = Nothing
, _cgrsResponseStatus = pResponseStatus_
}
cgrsGroup :: Lens' CreateGroupResponse (Maybe Group)
cgrsGroup = lens _cgrsGroup (\ s a -> s{_cgrsGroup = a})
cgrsResourceQuery :: Lens' CreateGroupResponse (Maybe ResourceQuery)
cgrsResourceQuery = lens _cgrsResourceQuery (\ s a -> s{_cgrsResourceQuery = a})
cgrsTags :: Lens' CreateGroupResponse (HashMap Text Text)
cgrsTags = lens _cgrsTags (\ s a -> s{_cgrsTags = a}) . _Default . _Map
cgrsResponseStatus :: Lens' CreateGroupResponse Int
cgrsResponseStatus = lens _cgrsResponseStatus (\ s a -> s{_cgrsResponseStatus = a})
instance NFData CreateGroupResponse where