{-# 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.Rekognition.SearchFacesByImage
(
searchFacesByImage
, SearchFacesByImage
, sfbiFaceMatchThreshold
, sfbiMaxFaces
, sfbiCollectionId
, sfbiImage
, searchFacesByImageResponse
, SearchFacesByImageResponse
, sfbirsFaceMatches
, sfbirsFaceModelVersion
, sfbirsSearchedFaceBoundingBox
, sfbirsSearchedFaceConfidence
, sfbirsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Rekognition.Types
import Network.AWS.Rekognition.Types.Product
import Network.AWS.Request
import Network.AWS.Response
data SearchFacesByImage = SearchFacesByImage'
{ _sfbiFaceMatchThreshold :: !(Maybe Double)
, _sfbiMaxFaces :: !(Maybe Nat)
, _sfbiCollectionId :: !Text
, _sfbiImage :: !Image
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchFacesByImage
:: Text
-> Image
-> SearchFacesByImage
searchFacesByImage pCollectionId_ pImage_ =
SearchFacesByImage'
{ _sfbiFaceMatchThreshold = Nothing
, _sfbiMaxFaces = Nothing
, _sfbiCollectionId = pCollectionId_
, _sfbiImage = pImage_
}
sfbiFaceMatchThreshold :: Lens' SearchFacesByImage (Maybe Double)
sfbiFaceMatchThreshold = lens _sfbiFaceMatchThreshold (\ s a -> s{_sfbiFaceMatchThreshold = a})
sfbiMaxFaces :: Lens' SearchFacesByImage (Maybe Natural)
sfbiMaxFaces = lens _sfbiMaxFaces (\ s a -> s{_sfbiMaxFaces = a}) . mapping _Nat
sfbiCollectionId :: Lens' SearchFacesByImage Text
sfbiCollectionId = lens _sfbiCollectionId (\ s a -> s{_sfbiCollectionId = a})
sfbiImage :: Lens' SearchFacesByImage Image
sfbiImage = lens _sfbiImage (\ s a -> s{_sfbiImage = a})
instance AWSRequest SearchFacesByImage where
type Rs SearchFacesByImage =
SearchFacesByImageResponse
request = postJSON rekognition
response
= receiveJSON
(\ s h x ->
SearchFacesByImageResponse' <$>
(x .?> "FaceMatches" .!@ mempty) <*>
(x .?> "FaceModelVersion")
<*> (x .?> "SearchedFaceBoundingBox")
<*> (x .?> "SearchedFaceConfidence")
<*> (pure (fromEnum s)))
instance Hashable SearchFacesByImage where
instance NFData SearchFacesByImage where
instance ToHeaders SearchFacesByImage where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("RekognitionService.SearchFacesByImage" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON SearchFacesByImage where
toJSON SearchFacesByImage'{..}
= object
(catMaybes
[("FaceMatchThreshold" .=) <$>
_sfbiFaceMatchThreshold,
("MaxFaces" .=) <$> _sfbiMaxFaces,
Just ("CollectionId" .= _sfbiCollectionId),
Just ("Image" .= _sfbiImage)])
instance ToPath SearchFacesByImage where
toPath = const "/"
instance ToQuery SearchFacesByImage where
toQuery = const mempty
data SearchFacesByImageResponse = SearchFacesByImageResponse'
{ _sfbirsFaceMatches :: !(Maybe [FaceMatch])
, _sfbirsFaceModelVersion :: !(Maybe Text)
, _sfbirsSearchedFaceBoundingBox :: !(Maybe BoundingBox)
, _sfbirsSearchedFaceConfidence :: !(Maybe Double)
, _sfbirsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
searchFacesByImageResponse
:: Int
-> SearchFacesByImageResponse
searchFacesByImageResponse pResponseStatus_ =
SearchFacesByImageResponse'
{ _sfbirsFaceMatches = Nothing
, _sfbirsFaceModelVersion = Nothing
, _sfbirsSearchedFaceBoundingBox = Nothing
, _sfbirsSearchedFaceConfidence = Nothing
, _sfbirsResponseStatus = pResponseStatus_
}
sfbirsFaceMatches :: Lens' SearchFacesByImageResponse [FaceMatch]
sfbirsFaceMatches = lens _sfbirsFaceMatches (\ s a -> s{_sfbirsFaceMatches = a}) . _Default . _Coerce
sfbirsFaceModelVersion :: Lens' SearchFacesByImageResponse (Maybe Text)
sfbirsFaceModelVersion = lens _sfbirsFaceModelVersion (\ s a -> s{_sfbirsFaceModelVersion = a})
sfbirsSearchedFaceBoundingBox :: Lens' SearchFacesByImageResponse (Maybe BoundingBox)
sfbirsSearchedFaceBoundingBox = lens _sfbirsSearchedFaceBoundingBox (\ s a -> s{_sfbirsSearchedFaceBoundingBox = a})
sfbirsSearchedFaceConfidence :: Lens' SearchFacesByImageResponse (Maybe Double)
sfbirsSearchedFaceConfidence = lens _sfbirsSearchedFaceConfidence (\ s a -> s{_sfbirsSearchedFaceConfidence = a})
sfbirsResponseStatus :: Lens' SearchFacesByImageResponse Int
sfbirsResponseStatus = lens _sfbirsResponseStatus (\ s a -> s{_sfbirsResponseStatus = a})
instance NFData SearchFacesByImageResponse where