{-# 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.DescribeWorkspaces
(
describeWorkspaces
, DescribeWorkspaces
, dwDirectoryId
, dwWorkspaceIds
, dwUserName
, dwBundleId
, dwNextToken
, dwLimit
, describeWorkspacesResponse
, DescribeWorkspacesResponse
, dwrsNextToken
, dwrsWorkspaces
, dwrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.WorkSpaces.Types
import Network.AWS.WorkSpaces.Types.Product
data DescribeWorkspaces = DescribeWorkspaces'
{ _dwDirectoryId :: !(Maybe Text)
, _dwWorkspaceIds :: !(Maybe (List1 Text))
, _dwUserName :: !(Maybe Text)
, _dwBundleId :: !(Maybe Text)
, _dwNextToken :: !(Maybe Text)
, _dwLimit :: !(Maybe Nat)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
describeWorkspaces
:: DescribeWorkspaces
describeWorkspaces =
DescribeWorkspaces'
{ _dwDirectoryId = Nothing
, _dwWorkspaceIds = Nothing
, _dwUserName = Nothing
, _dwBundleId = Nothing
, _dwNextToken = Nothing
, _dwLimit = Nothing
}
dwDirectoryId :: Lens' DescribeWorkspaces (Maybe Text)
dwDirectoryId = lens _dwDirectoryId (\ s a -> s{_dwDirectoryId = a})
dwWorkspaceIds :: Lens' DescribeWorkspaces (Maybe (NonEmpty Text))
dwWorkspaceIds = lens _dwWorkspaceIds (\ s a -> s{_dwWorkspaceIds = a}) . mapping _List1
dwUserName :: Lens' DescribeWorkspaces (Maybe Text)
dwUserName = lens _dwUserName (\ s a -> s{_dwUserName = a})
dwBundleId :: Lens' DescribeWorkspaces (Maybe Text)
dwBundleId = lens _dwBundleId (\ s a -> s{_dwBundleId = a})
dwNextToken :: Lens' DescribeWorkspaces (Maybe Text)
dwNextToken = lens _dwNextToken (\ s a -> s{_dwNextToken = a})
dwLimit :: Lens' DescribeWorkspaces (Maybe Natural)
dwLimit = lens _dwLimit (\ s a -> s{_dwLimit = a}) . mapping _Nat
instance AWSPager DescribeWorkspaces where
page rq rs
| stop (rs ^. dwrsNextToken) = Nothing
| stop (rs ^. dwrsWorkspaces) = Nothing
| otherwise =
Just $ rq & dwNextToken .~ rs ^. dwrsNextToken
instance AWSRequest DescribeWorkspaces where
type Rs DescribeWorkspaces =
DescribeWorkspacesResponse
request = postJSON workSpaces
response
= receiveJSON
(\ s h x ->
DescribeWorkspacesResponse' <$>
(x .?> "NextToken") <*>
(x .?> "Workspaces" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable DescribeWorkspaces where
instance NFData DescribeWorkspaces where
instance ToHeaders DescribeWorkspaces where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("WorkspacesService.DescribeWorkspaces" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON DescribeWorkspaces where
toJSON DescribeWorkspaces'{..}
= object
(catMaybes
[("DirectoryId" .=) <$> _dwDirectoryId,
("WorkspaceIds" .=) <$> _dwWorkspaceIds,
("UserName" .=) <$> _dwUserName,
("BundleId" .=) <$> _dwBundleId,
("NextToken" .=) <$> _dwNextToken,
("Limit" .=) <$> _dwLimit])
instance ToPath DescribeWorkspaces where
toPath = const "/"
instance ToQuery DescribeWorkspaces where
toQuery = const mempty
data DescribeWorkspacesResponse = DescribeWorkspacesResponse'
{ _dwrsNextToken :: !(Maybe Text)
, _dwrsWorkspaces :: !(Maybe [Workspace])
, _dwrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
describeWorkspacesResponse
:: Int
-> DescribeWorkspacesResponse
describeWorkspacesResponse pResponseStatus_ =
DescribeWorkspacesResponse'
{ _dwrsNextToken = Nothing
, _dwrsWorkspaces = Nothing
, _dwrsResponseStatus = pResponseStatus_
}
dwrsNextToken :: Lens' DescribeWorkspacesResponse (Maybe Text)
dwrsNextToken = lens _dwrsNextToken (\ s a -> s{_dwrsNextToken = a})
dwrsWorkspaces :: Lens' DescribeWorkspacesResponse [Workspace]
dwrsWorkspaces = lens _dwrsWorkspaces (\ s a -> s{_dwrsWorkspaces = a}) . _Default . _Coerce
dwrsResponseStatus :: Lens' DescribeWorkspacesResponse Int
dwrsResponseStatus = lens _dwrsResponseStatus (\ s a -> s{_dwrsResponseStatus = a})
instance NFData DescribeWorkspacesResponse where