{-# 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 #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.Rekognition.RecognizeCelebrities -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Returns an array of celebrities recognized in the input image. For more information, see 'celebrities' . -- -- -- @RecognizeCelebrities@ returns the 100 largest faces in the image. It lists recognized celebrities in the @CelebrityFaces@ array and unrecognized faces in the @UnrecognizedFaces@ array. @RecognizeCelebrities@ doesn't return celebrities whose faces are not amongst the largest 100 faces in the image. -- -- For each celebrity recognized, the @RecognizeCelebrities@ returns a @Celebrity@ object. The @Celebrity@ object contains the celebrity name, ID, URL links to additional information, match confidence, and a @ComparedFace@ object that you can use to locate the celebrity's face on the image. -- -- Rekognition does not retain information about which images a celebrity has been recognized in. Your application must store this information and use the @Celebrity@ ID property as a unique identifier for the celebrity. If you don't store the celebrity name or additional information URLs returned by @RecognizeCelebrities@ , you will need the ID to identify the celebrity in a call to the operation. -- -- You pass the imput image either as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. If you use the Amazon CLI to call Amazon Rekognition operations, passing image bytes is not supported. The image must be either a PNG or JPEG formatted file. -- -- For an example, see 'celebrities-procedure-image' . -- -- This operation requires permissions to perform the @rekognition:RecognizeCelebrities@ operation. -- module Network.AWS.Rekognition.RecognizeCelebrities ( -- * Creating a Request recognizeCelebrities , RecognizeCelebrities -- * Request Lenses , rcImage -- * Destructuring the Response , recognizeCelebritiesResponse , RecognizeCelebritiesResponse -- * Response Lenses , rcrsCelebrityFaces , rcrsOrientationCorrection , rcrsUnrecognizedFaces , rcrsResponseStatus ) 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 -- | /See:/ 'recognizeCelebrities' smart constructor. newtype RecognizeCelebrities = RecognizeCelebrities' { _rcImage :: Image } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'RecognizeCelebrities' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rcImage' - The input image as base64-encoded bytes or an S3 object. If you use the AWS CLI to call Amazon Rekognition operations, passing base64-encoded image bytes is not supported. recognizeCelebrities :: Image -- ^ 'rcImage' -> RecognizeCelebrities recognizeCelebrities pImage_ = RecognizeCelebrities' {_rcImage = pImage_} -- | The input image as base64-encoded bytes or an S3 object. If you use the AWS CLI to call Amazon Rekognition operations, passing base64-encoded image bytes is not supported. rcImage :: Lens' RecognizeCelebrities Image rcImage = lens _rcImage (\ s a -> s{_rcImage = a}) instance AWSRequest RecognizeCelebrities where type Rs RecognizeCelebrities = RecognizeCelebritiesResponse request = postJSON rekognition response = receiveJSON (\ s h x -> RecognizeCelebritiesResponse' <$> (x .?> "CelebrityFaces" .!@ mempty) <*> (x .?> "OrientationCorrection") <*> (x .?> "UnrecognizedFaces" .!@ mempty) <*> (pure (fromEnum s))) instance Hashable RecognizeCelebrities where instance NFData RecognizeCelebrities where instance ToHeaders RecognizeCelebrities where toHeaders = const (mconcat ["X-Amz-Target" =# ("RekognitionService.RecognizeCelebrities" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON RecognizeCelebrities where toJSON RecognizeCelebrities'{..} = object (catMaybes [Just ("Image" .= _rcImage)]) instance ToPath RecognizeCelebrities where toPath = const "/" instance ToQuery RecognizeCelebrities where toQuery = const mempty -- | /See:/ 'recognizeCelebritiesResponse' smart constructor. data RecognizeCelebritiesResponse = RecognizeCelebritiesResponse' { _rcrsCelebrityFaces :: !(Maybe [Celebrity]) , _rcrsOrientationCorrection :: !(Maybe OrientationCorrection) , _rcrsUnrecognizedFaces :: !(Maybe [ComparedFace]) , _rcrsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'RecognizeCelebritiesResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rcrsCelebrityFaces' - Details about each celebrity found in the image. Amazon Rekognition can detect a maximum of 15 celebrities in an image. -- -- * 'rcrsOrientationCorrection' - The orientation of the input image (counterclockwise direction). If your application displays the image, you can use this value to correct the orientation. The bounding box coordinates returned in @CelebrityFaces@ and @UnrecognizedFaces@ represent face locations before the image orientation is corrected. -- -- * 'rcrsUnrecognizedFaces' - Details about each unrecognized face in the image. -- -- * 'rcrsResponseStatus' - -- | The response status code. recognizeCelebritiesResponse :: Int -- ^ 'rcrsResponseStatus' -> RecognizeCelebritiesResponse recognizeCelebritiesResponse pResponseStatus_ = RecognizeCelebritiesResponse' { _rcrsCelebrityFaces = Nothing , _rcrsOrientationCorrection = Nothing , _rcrsUnrecognizedFaces = Nothing , _rcrsResponseStatus = pResponseStatus_ } -- | Details about each celebrity found in the image. Amazon Rekognition can detect a maximum of 15 celebrities in an image. rcrsCelebrityFaces :: Lens' RecognizeCelebritiesResponse [Celebrity] rcrsCelebrityFaces = lens _rcrsCelebrityFaces (\ s a -> s{_rcrsCelebrityFaces = a}) . _Default . _Coerce -- | The orientation of the input image (counterclockwise direction). If your application displays the image, you can use this value to correct the orientation. The bounding box coordinates returned in @CelebrityFaces@ and @UnrecognizedFaces@ represent face locations before the image orientation is corrected. rcrsOrientationCorrection :: Lens' RecognizeCelebritiesResponse (Maybe OrientationCorrection) rcrsOrientationCorrection = lens _rcrsOrientationCorrection (\ s a -> s{_rcrsOrientationCorrection = a}) -- | Details about each unrecognized face in the image. rcrsUnrecognizedFaces :: Lens' RecognizeCelebritiesResponse [ComparedFace] rcrsUnrecognizedFaces = lens _rcrsUnrecognizedFaces (\ s a -> s{_rcrsUnrecognizedFaces = a}) . _Default . _Coerce -- | -- | The response status code. rcrsResponseStatus :: Lens' RecognizeCelebritiesResponse Int rcrsResponseStatus = lens _rcrsResponseStatus (\ s a -> s{_rcrsResponseStatus = a}) instance NFData RecognizeCelebritiesResponse where