{-# 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.IoT.SearchIndex
(
searchIndex
, SearchIndex
, siQueryVersion
, siNextToken
, siMaxResults
, siIndexName
, siQueryString
, searchIndexResponse
, SearchIndexResponse
, sirsNextToken
, sirsThings
, sirsResponseStatus
) where
import Network.AWS.IoT.Types
import Network.AWS.IoT.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data SearchIndex = SearchIndex'
{ _siQueryVersion :: !(Maybe Text)
, _siNextToken :: !(Maybe Text)
, _siMaxResults :: !(Maybe Nat)
, _siIndexName :: !(Maybe Text)
, _siQueryString :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchIndex
:: Text
-> SearchIndex
searchIndex pQueryString_ =
SearchIndex'
{ _siQueryVersion = Nothing
, _siNextToken = Nothing
, _siMaxResults = Nothing
, _siIndexName = Nothing
, _siQueryString = pQueryString_
}
siQueryVersion :: Lens' SearchIndex (Maybe Text)
siQueryVersion = lens _siQueryVersion (\ s a -> s{_siQueryVersion = a})
siNextToken :: Lens' SearchIndex (Maybe Text)
siNextToken = lens _siNextToken (\ s a -> s{_siNextToken = a})
siMaxResults :: Lens' SearchIndex (Maybe Natural)
siMaxResults = lens _siMaxResults (\ s a -> s{_siMaxResults = a}) . mapping _Nat
siIndexName :: Lens' SearchIndex (Maybe Text)
siIndexName = lens _siIndexName (\ s a -> s{_siIndexName = a})
siQueryString :: Lens' SearchIndex Text
siQueryString = lens _siQueryString (\ s a -> s{_siQueryString = a})
instance AWSRequest SearchIndex where
type Rs SearchIndex = SearchIndexResponse
request = postJSON ioT
response
= receiveJSON
(\ s h x ->
SearchIndexResponse' <$>
(x .?> "nextToken") <*> (x .?> "things" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable SearchIndex where
instance NFData SearchIndex where
instance ToHeaders SearchIndex where
toHeaders = const mempty
instance ToJSON SearchIndex where
toJSON SearchIndex'{..}
= object
(catMaybes
[("queryVersion" .=) <$> _siQueryVersion,
("nextToken" .=) <$> _siNextToken,
("maxResults" .=) <$> _siMaxResults,
("indexName" .=) <$> _siIndexName,
Just ("queryString" .= _siQueryString)])
instance ToPath SearchIndex where
toPath = const "/indices/search"
instance ToQuery SearchIndex where
toQuery = const mempty
data SearchIndexResponse = SearchIndexResponse'
{ _sirsNextToken :: !(Maybe Text)
, _sirsThings :: !(Maybe [ThingDocument])
, _sirsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchIndexResponse
:: Int
-> SearchIndexResponse
searchIndexResponse pResponseStatus_ =
SearchIndexResponse'
{ _sirsNextToken = Nothing
, _sirsThings = Nothing
, _sirsResponseStatus = pResponseStatus_
}
sirsNextToken :: Lens' SearchIndexResponse (Maybe Text)
sirsNextToken = lens _sirsNextToken (\ s a -> s{_sirsNextToken = a})
sirsThings :: Lens' SearchIndexResponse [ThingDocument]
sirsThings = lens _sirsThings (\ s a -> s{_sirsThings = a}) . _Default . _Coerce
sirsResponseStatus :: Lens' SearchIndexResponse Int
sirsResponseStatus = lens _sirsResponseStatus (\ s a -> s{_sirsResponseStatus = a})
instance NFData SearchIndexResponse where