amazonka-rekognition-1.5.0: gen/Network/AWS/Rekognition/RecognizeCelebrities.hs
{-# 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-2017 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns an array of celebrities recognized in the input image. The image is passed either as base64-encoded image bytes or as a reference to an image in an Amazon S3 bucket. The image must be either a PNG or JPEG formatted file. For more information, see 'celebrity-recognition' .
--
--
-- @RecognizeCelebrities@ returns the 15 largest faces in the image. It lists recognized celebrities in the @CelebrityFaces@ list and unrecognized faces in the @UnrecognizedFaces@ list. The operation doesn't return celebrities whose face sizes are smaller than the largest 15 faces in the image.
--
-- For each celebrity recognized, the API 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.
--
-- For an example, see 'recognize-celebrities-tutorial' .
--
-- 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 to use for celebrity recognition.
recognizeCelebrities
:: Image -- ^ 'rcImage'
-> RecognizeCelebrities
recognizeCelebrities pImage_ = RecognizeCelebrities' {_rcImage = pImage_}
-- | The input image to use for celebrity recognition.
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