module Network.AWS.Support.DescribeCases
(
DescribeCases
, describeCases
, dcAfterTime
, dcBeforeTime
, dcCaseIdList
, dcDisplayId
, dcIncludeCommunications
, dcIncludeResolvedCases
, dcLanguage
, dcMaxResults
, dcNextToken
, DescribeCasesResponse
, describeCasesResponse
, dcr1Cases
, dcr1NextToken
) where
import Network.AWS.Prelude
import Network.AWS.Request.JSON
import Network.AWS.Support.Types
import qualified GHC.Exts
data DescribeCases = DescribeCases
{ _dcAfterTime :: Maybe Text
, _dcBeforeTime :: Maybe Text
, _dcCaseIdList :: List "caseIdList" Text
, _dcDisplayId :: Maybe Text
, _dcIncludeCommunications :: Maybe Bool
, _dcIncludeResolvedCases :: Maybe Bool
, _dcLanguage :: Maybe Text
, _dcMaxResults :: Maybe Nat
, _dcNextToken :: Maybe Text
} deriving (Eq, Ord, Show)
describeCases :: DescribeCases
describeCases = DescribeCases
{ _dcCaseIdList = mempty
, _dcDisplayId = Nothing
, _dcAfterTime = Nothing
, _dcBeforeTime = Nothing
, _dcIncludeResolvedCases = Nothing
, _dcNextToken = Nothing
, _dcMaxResults = Nothing
, _dcLanguage = Nothing
, _dcIncludeCommunications = Nothing
}
dcAfterTime :: Lens' DescribeCases (Maybe Text)
dcAfterTime = lens _dcAfterTime (\s a -> s { _dcAfterTime = a })
dcBeforeTime :: Lens' DescribeCases (Maybe Text)
dcBeforeTime = lens _dcBeforeTime (\s a -> s { _dcBeforeTime = a })
dcCaseIdList :: Lens' DescribeCases [Text]
dcCaseIdList = lens _dcCaseIdList (\s a -> s { _dcCaseIdList = a }) . _List
dcDisplayId :: Lens' DescribeCases (Maybe Text)
dcDisplayId = lens _dcDisplayId (\s a -> s { _dcDisplayId = a })
dcIncludeCommunications :: Lens' DescribeCases (Maybe Bool)
dcIncludeCommunications =
lens _dcIncludeCommunications (\s a -> s { _dcIncludeCommunications = a })
dcIncludeResolvedCases :: Lens' DescribeCases (Maybe Bool)
dcIncludeResolvedCases =
lens _dcIncludeResolvedCases (\s a -> s { _dcIncludeResolvedCases = a })
dcLanguage :: Lens' DescribeCases (Maybe Text)
dcLanguage = lens _dcLanguage (\s a -> s { _dcLanguage = a })
dcMaxResults :: Lens' DescribeCases (Maybe Natural)
dcMaxResults = lens _dcMaxResults (\s a -> s { _dcMaxResults = a }) . mapping _Nat
dcNextToken :: Lens' DescribeCases (Maybe Text)
dcNextToken = lens _dcNextToken (\s a -> s { _dcNextToken = a })
data DescribeCasesResponse = DescribeCasesResponse
{ _dcr1Cases :: List "cases" CaseDetails
, _dcr1NextToken :: Maybe Text
} deriving (Eq, Show)
describeCasesResponse :: DescribeCasesResponse
describeCasesResponse = DescribeCasesResponse
{ _dcr1Cases = mempty
, _dcr1NextToken = Nothing
}
dcr1Cases :: Lens' DescribeCasesResponse [CaseDetails]
dcr1Cases = lens _dcr1Cases (\s a -> s { _dcr1Cases = a }) . _List
dcr1NextToken :: Lens' DescribeCasesResponse (Maybe Text)
dcr1NextToken = lens _dcr1NextToken (\s a -> s { _dcr1NextToken = a })
instance ToPath DescribeCases where
toPath = const "/"
instance ToQuery DescribeCases where
toQuery = const mempty
instance ToHeaders DescribeCases
instance ToJSON DescribeCases where
toJSON DescribeCases{..} = object
[ "caseIdList" .= _dcCaseIdList
, "displayId" .= _dcDisplayId
, "afterTime" .= _dcAfterTime
, "beforeTime" .= _dcBeforeTime
, "includeResolvedCases" .= _dcIncludeResolvedCases
, "nextToken" .= _dcNextToken
, "maxResults" .= _dcMaxResults
, "language" .= _dcLanguage
, "includeCommunications" .= _dcIncludeCommunications
]
instance AWSRequest DescribeCases where
type Sv DescribeCases = Support
type Rs DescribeCases = DescribeCasesResponse
request = post "DescribeCases"
response = jsonResponse
instance FromJSON DescribeCasesResponse where
parseJSON = withObject "DescribeCasesResponse" $ \o -> DescribeCasesResponse
<$> o .: "cases"
<*> o .:? "nextToken"
instance AWSPager DescribeCases where
page rq rs
| stop (rq ^. dcNextToken) = Nothing
| otherwise = (\x -> rq & dcNextToken ?~ x)
<$> (rs ^. dcr1NextToken)