packages feed

amazonka-rekognition (empty) → 1.4.5

raw patch · 47 files changed

+4846/−0 lines, 47 filesdep +amazonka-coredep +amazonka-rekognitiondep +amazonka-testsetup-changed

Dependencies added: amazonka-core, amazonka-rekognition, amazonka-test, base, bytestring, tasty, tasty-hunit, text, time, unordered-containers

Files

+ LICENSE view
@@ -0,0 +1,367 @@+Mozilla Public License Version 2.0+==================================++1. Definitions+--------------++1.1. "Contributor"+    means each individual or legal entity that creates, contributes to+    the creation of, or owns Covered Software.++1.2. "Contributor Version"+    means the combination of the Contributions of others (if any) used+    by a Contributor and that particular Contributor's Contribution.++1.3. "Contribution"+    means Covered Software of a particular Contributor.++1.4. "Covered Software"+    means Source Code Form to which the initial Contributor has attached+    the notice in Exhibit A, the Executable Form of such Source Code+    Form, and Modifications of such Source Code Form, in each case+    including portions thereof.++1.5. "Incompatible With Secondary Licenses"+    means++    (a) that the initial Contributor has attached the notice described+        in Exhibit B to the Covered Software; or++    (b) that the Covered Software was made available under the terms of+        version 1.1 or earlier of the License, but not also under the+        terms of a Secondary License.++1.6. "Executable Form"+    means any form of the work other than Source Code Form.++1.7. "Larger Work"+    means a work that combines Covered Software with other material, in+    a separate file or files, that is not Covered Software.++1.8. "License"+    means this document.++1.9. "Licensable"+    means having the right to grant, to the maximum extent possible,+    whether at the time of the initial grant or subsequently, any and+    all of the rights conveyed by this License.++1.10. "Modifications"+    means any of the following:++    (a) any file in Source Code Form that results from an addition to,+        deletion from, or modification of the contents of Covered+        Software; or++    (b) any new file in Source Code Form that contains any Covered+        Software.++1.11. "Patent Claims" of a Contributor+    means any patent claim(s), including without limitation, method,+    process, and apparatus claims, in any patent Licensable by such+    Contributor that would be infringed, but for the grant of the+    License, by the making, using, selling, offering for sale, having+    made, import, or transfer of either its Contributions or its+    Contributor Version.++1.12. "Secondary License"+    means either the GNU General Public License, Version 2.0, the GNU+    Lesser General Public License, Version 2.1, the GNU Affero General+    Public License, Version 3.0, or any later versions of those+    licenses.++1.13. "Source Code Form"+    means the form of the work preferred for making modifications.++1.14. "You" (or "Your")+    means an individual or a legal entity exercising rights under this+    License. For legal entities, "You" includes any entity that+    controls, is controlled by, or is under common control with You. For+    purposes of this definition, "control" means (a) the power, direct+    or indirect, to cause the direction or management of such entity,+    whether by contract or otherwise, or (b) ownership of more than+    fifty percent (50%) of the outstanding shares or beneficial+    ownership of such entity.++2. License Grants and Conditions+--------------------------------++2.1. Grants++Each Contributor hereby grants You a world-wide, royalty-free,+non-exclusive license:++(a) under intellectual property rights (other than patent or trademark)+    Licensable by such Contributor to use, reproduce, make available,+    modify, display, perform, distribute, and otherwise exploit its+    Contributions, either on an unmodified basis, with Modifications, or+    as part of a Larger Work; and++(b) under Patent Claims of such Contributor to make, use, sell, offer+    for sale, have made, import, and otherwise transfer either its+    Contributions or its Contributor Version.++2.2. Effective Date++The licenses granted in Section 2.1 with respect to any Contribution+become effective for each Contribution on the date the Contributor first+distributes such Contribution.++2.3. Limitations on Grant Scope++The licenses granted in this Section 2 are the only rights granted under+this License. No additional rights or licenses will be implied from the+distribution or licensing of Covered Software under this License.+Notwithstanding Section 2.1(b) above, no patent license is granted by a+Contributor:++(a) for any code that a Contributor has removed from Covered Software;+    or++(b) for infringements caused by: (i) Your and any other third party's+    modifications of Covered Software, or (ii) the combination of its+    Contributions with other software (except as part of its Contributor+    Version); or++(c) under Patent Claims infringed by Covered Software in the absence of+    its Contributions.++This License does not grant any rights in the trademarks, service marks,+or logos of any Contributor (except as may be necessary to comply with+the notice requirements in Section 3.4).++2.4. Subsequent Licenses++No Contributor makes additional grants as a result of Your choice to+distribute the Covered Software under a subsequent version of this+License (see Section 10.2) or under the terms of a Secondary License (if+permitted under the terms of Section 3.3).++2.5. Representation++Each Contributor represents that the Contributor believes its+Contributions are its original creation(s) or it has sufficient rights+to grant the rights to its Contributions conveyed by this License.++2.6. Fair Use++This License is not intended to limit any rights You have under+applicable copyright doctrines of fair use, fair dealing, or other+equivalents.++2.7. Conditions++Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted+in Section 2.1.++3. Responsibilities+-------------------++3.1. Distribution of Source Form++All distribution of Covered Software in Source Code Form, including any+Modifications that You create or to which You contribute, must be under+the terms of this License. You must inform recipients that the Source+Code Form of the Covered Software is governed by the terms of this+License, and how they can obtain a copy of this License. You may not+attempt to alter or restrict the recipients' rights in the Source Code+Form.++3.2. Distribution of Executable Form++If You distribute Covered Software in Executable Form then:++(a) such Covered Software must also be made available in Source Code+    Form, as described in Section 3.1, and You must inform recipients of+    the Executable Form how they can obtain a copy of such Source Code+    Form by reasonable means in a timely manner, at a charge no more+    than the cost of distribution to the recipient; and++(b) You may distribute such Executable Form under the terms of this+    License, or sublicense it under different terms, provided that the+    license for the Executable Form does not attempt to limit or alter+    the recipients' rights in the Source Code Form under this License.++3.3. Distribution of a Larger Work++You may create and distribute a Larger Work under terms of Your choice,+provided that You also comply with the requirements of this License for+the Covered Software. If the Larger Work is a combination of Covered+Software with a work governed by one or more Secondary Licenses, and the+Covered Software is not Incompatible With Secondary Licenses, this+License permits You to additionally distribute such Covered Software+under the terms of such Secondary License(s), so that the recipient of+the Larger Work may, at their option, further distribute the Covered+Software under the terms of either this License or such Secondary+License(s).++3.4. Notices++You may not remove or alter the substance of any license notices+(including copyright notices, patent notices, disclaimers of warranty,+or limitations of liability) contained within the Source Code Form of+the Covered Software, except that You may alter any license notices to+the extent required to remedy known factual inaccuracies.++3.5. Application of Additional Terms++You may choose to offer, and to charge a fee for, warranty, support,+indemnity or liability obligations to one or more recipients of Covered+Software. However, You may do so only on Your own behalf, and not on+behalf of any Contributor. You must make it absolutely clear that any+such warranty, support, indemnity, or liability obligation is offered by+You alone, and You hereby agree to indemnify every Contributor for any+liability incurred by such Contributor as a result of warranty, support,+indemnity or liability terms You offer. You may include additional+disclaimers of warranty and limitations of liability specific to any+jurisdiction.++4. Inability to Comply Due to Statute or Regulation+---------------------------------------------------++If it is impossible for You to comply with any of the terms of this+License with respect to some or all of the Covered Software due to+statute, judicial order, or regulation then You must: (a) comply with+the terms of this License to the maximum extent possible; and (b)+describe the limitations and the code they affect. Such description must+be placed in a text file included with all distributions of the Covered+Software under this License. Except to the extent prohibited by statute+or regulation, such description must be sufficiently detailed for a+recipient of ordinary skill to be able to understand it.++5. Termination+--------------++5.1. The rights granted under this License will terminate automatically+if You fail to comply with any of its terms. However, if You become+compliant, then the rights granted under this License from a particular+Contributor are reinstated (a) provisionally, unless and until such+Contributor explicitly and finally terminates Your grants, and (b) on an+ongoing basis, if such Contributor fails to notify You of the+non-compliance by some reasonable means prior to 60 days after You have+come back into compliance. Moreover, Your grants from a particular+Contributor are reinstated on an ongoing basis if such Contributor+notifies You of the non-compliance by some reasonable means, this is the+first time You have received notice of non-compliance with this License+from such Contributor, and You become compliant prior to 30 days after+Your receipt of the notice.++5.2. If You initiate litigation against any entity by asserting a patent+infringement claim (excluding declaratory judgment actions,+counter-claims, and cross-claims) alleging that a Contributor Version+directly or indirectly infringes any patent, then the rights granted to+You by any and all Contributors for the Covered Software under Section+2.1 of this License shall terminate.++5.3. In the event of termination under Sections 5.1 or 5.2 above, all+end user license agreements (excluding distributors and resellers) which+have been validly granted by You or Your distributors under this License+prior to termination shall survive termination.++************************************************************************+*                                                                      *+*  6. Disclaimer of Warranty                                           *+*  -------------------------                                           *+*                                                                      *+*  Covered Software is provided under this License on an "as is"       *+*  basis, without warranty of any kind, either expressed, implied, or  *+*  statutory, including, without limitation, warranties that the       *+*  Covered Software is free of defects, merchantable, fit for a        *+*  particular purpose or non-infringing. The entire risk as to the     *+*  quality and performance of the Covered Software is with You.        *+*  Should any Covered Software prove defective in any respect, You     *+*  (not any Contributor) assume the cost of any necessary servicing,   *+*  repair, or correction. This disclaimer of warranty constitutes an   *+*  essential part of this License. No use of any Covered Software is   *+*  authorized under this License except under this disclaimer.         *+*                                                                      *+************************************************************************++************************************************************************+*                                                                      *+*  7. Limitation of Liability                                          *+*  --------------------------                                          *+*                                                                      *+*  Under no circumstances and under no legal theory, whether tort      *+*  (including negligence), contract, or otherwise, shall any           *+*  Contributor, or anyone who distributes Covered Software as          *+*  permitted above, be liable to You for any direct, indirect,         *+*  special, incidental, or consequential damages of any character      *+*  including, without limitation, damages for lost profits, loss of    *+*  goodwill, work stoppage, computer failure or malfunction, or any    *+*  and all other commercial damages or losses, even if such party      *+*  shall have been informed of the possibility of such damages. This   *+*  limitation of liability shall not apply to liability for death or   *+*  personal injury resulting from such party's negligence to the       *+*  extent applicable law prohibits such limitation. Some               *+*  jurisdictions do not allow the exclusion or limitation of           *+*  incidental or consequential damages, so this exclusion and          *+*  limitation may not apply to You.                                    *+*                                                                      *+************************************************************************++8. Litigation+-------------++Any litigation relating to this License may be brought only in the+courts of a jurisdiction where the defendant maintains its principal+place of business and such litigation shall be governed by laws of that+jurisdiction, without reference to its conflict-of-law provisions.+Nothing in this Section shall prevent a party's ability to bring+cross-claims or counter-claims.++9. Miscellaneous+----------------++This License represents the complete agreement concerning the subject+matter hereof. If any provision of this License is held to be+unenforceable, such provision shall be reformed only to the extent+necessary to make it enforceable. Any law or regulation which provides+that the language of a contract shall be construed against the drafter+shall not be used to construe this License against a Contributor.++10. Versions of the License+---------------------------++10.1. New Versions++Mozilla Foundation is the license steward. Except as provided in Section+10.3, no one other than the license steward has the right to modify or+publish new versions of this License. Each version will be given a+distinguishing version number.++10.2. Effect of New Versions++You may distribute the Covered Software under the terms of the version+of the License under which You originally received the Covered Software,+or under the terms of any subsequent version published by the license+steward.++10.3. Modified Versions++If you create software not governed by this License, and you want to+create a new license for such software, you may create and use a+modified version of this License if you rename the license and remove+any references to the name of the license steward (except to note that+such modified license differs from this License).++10.4. Distributing Source Code Form that is Incompatible With Secondary+Licenses++If You choose to distribute Source Code Form that is Incompatible With+Secondary Licenses under the terms of this version of the License, the+notice described in Exhibit B of this License must be attached.++Exhibit A - Source Code Form License Notice+-------------------------------------------++  This Source Code Form is subject to the terms of the Mozilla Public+  License, v. 2.0. If a copy of the MPL was not distributed with this+  file, You can obtain one at http://mozilla.org/MPL/2.0/.++If it is not possible or desirable to put the notice in a particular+file, then You may include the notice in a location (such as a LICENSE+file in a relevant directory) where a recipient would be likely to look+for such a notice.++You may add additional accurate notices of copyright ownership.
+ README.md view
@@ -0,0 +1,45 @@+# Amazon Rekognition SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version++`1.4.5`+++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-rekognition)+and the [AWS API Reference](https://aws.amazon.com/documentation/).++The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),+which provides mechanisms for specifying AuthN/AuthZ information, sending requests,+and receiving responses.++Lenses are used for constructing and manipulating types,+due to the depth of nesting of AWS types and transparency regarding+de/serialisation into more palatable Haskell values.+The provided lenses should be compatible with any of the major lens libraries+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).++See [Network.AWS.Rekognition](http://hackage.haskell.org/package/amazonka-rekognition/docs/Network-AWS-Rekognition.html)+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.+++## Contribute++For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).++> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.+++## Licence++`amazonka-rekognition` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).++Parts of the code are derived from AWS service descriptions, licensed under Apache 2.0.+Source files subject to this contain an additional licensing clause in their header.
+ Setup.hs view
@@ -0,0 +1,2 @@+import           Distribution.Simple+main = defaultMain
+ amazonka-rekognition.cabal view
@@ -0,0 +1,91 @@+name:                  amazonka-rekognition+version:               1.4.5+synopsis:              Amazon Rekognition SDK.+homepage:              https://github.com/brendanhay/amazonka+bug-reports:           https://github.com/brendanhay/amazonka/issues+license:               OtherLicense+license-file:          LICENSE+author:                Brendan Hay+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>+copyright:             Copyright (c) 2013-2016 Brendan Hay+category:              Network, AWS, Cloud, Distributed Computing+build-type:            Simple+cabal-version:         >= 1.10+extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep+description:+    The types from this library are intended to be used with+    <http://hackage.haskell.org/package/amazonka amazonka>, which provides+    mechanisms for specifying AuthN/AuthZ information, sending requests,+    and receiving responses.+    .+    Lenses are used for constructing and manipulating types,+    due to the depth of nesting of AWS types and transparency regarding+    de/serialisation into more palatable Haskell values.+    The provided lenses should be compatible with any of the major lens libraries+    such as <http://hackage.haskell.org/package/lens lens> or+    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.+    .+    See "Network.AWS.Rekognition" or <https://aws.amazon.com/documentation/ the AWS documentation>+    to get started.++source-repository head+    type:     git+    location: git://github.com/brendanhay/amazonka.git++library+    default-language:  Haskell2010+    hs-source-dirs:    src gen++    ghc-options:       -Wall++    exposed-modules:+          Network.AWS.Rekognition+        , Network.AWS.Rekognition.CompareFaces+        , Network.AWS.Rekognition.CreateCollection+        , Network.AWS.Rekognition.DeleteCollection+        , Network.AWS.Rekognition.DeleteFaces+        , Network.AWS.Rekognition.DetectFaces+        , Network.AWS.Rekognition.DetectLabels+        , Network.AWS.Rekognition.IndexFaces+        , Network.AWS.Rekognition.ListCollections+        , Network.AWS.Rekognition.ListFaces+        , Network.AWS.Rekognition.SearchFaces+        , Network.AWS.Rekognition.SearchFacesByImage+        , Network.AWS.Rekognition.Types+        , Network.AWS.Rekognition.Waiters++    other-modules:+          Network.AWS.Rekognition.Types.Product+        , Network.AWS.Rekognition.Types.Sum++    build-depends:+          amazonka-core == 1.4.5.*+        , base          >= 4.7     && < 5++test-suite amazonka-rekognition-test+    type:              exitcode-stdio-1.0+    default-language:  Haskell2010+    hs-source-dirs:    test+    main-is:           Main.hs++    ghc-options:       -Wall -threaded++    -- This section is encoded by the template and any modules added by+    -- hand outside these namespaces will not correctly be added to the+    -- distribution package.+    other-modules:+          Test.AWS.Rekognition+        , Test.AWS.Gen.Rekognition+        , Test.AWS.Rekognition.Internal++    build-depends:+          amazonka-core == 1.4.5.*+        , amazonka-test == 1.4.5.*+        , amazonka-rekognition == 1.4.5.*+        , base+        , bytestring+        , tasty+        , tasty-hunit+        , text+        , time+        , unordered-containers
+ fixture/CompareFaces.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CompareFacesResponse.proto view
+ fixture/CreateCollection.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/CreateCollectionResponse.proto view
+ fixture/DeleteCollection.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteCollectionResponse.proto view
+ fixture/DeleteFaces.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DeleteFacesResponse.proto view
+ fixture/DetectFaces.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DetectFacesResponse.proto view
+ fixture/DetectLabels.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/DetectLabelsResponse.proto view
+ fixture/IndexFaces.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/IndexFacesResponse.proto view
+ fixture/ListCollections.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListCollectionsResponse.proto view
+ fixture/ListFaces.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/ListFacesResponse.proto view
+ fixture/SearchFaces.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/SearchFacesByImage.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/rekognition/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  rekognition.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/SearchFacesByImageResponse.proto view
+ fixture/SearchFacesResponse.proto view
+ gen/Network/AWS/Rekognition.hs view
@@ -0,0 +1,315 @@+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Network.AWS.Rekognition+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- This is Amazon Rekognition API guide.+--+--+module Network.AWS.Rekognition+    (+    -- * Service Configuration+      rekognition++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    , _AccessDeniedException++    -- ** InvalidParameterException+    , _InvalidParameterException++    -- ** InvalidImageFormatException+    , _InvalidImageFormatException++    -- ** ResourceAlreadyExistsException+    , _ResourceAlreadyExistsException++    -- ** InvalidS3ObjectException+    , _InvalidS3ObjectException++    -- ** ProvisionedThroughputExceededException+    , _ProvisionedThroughputExceededException++    -- ** ImageTooLargeException+    , _ImageTooLargeException++    -- ** ThrottlingException+    , _ThrottlingException++    -- ** InternalServerError+    , _InternalServerError++    -- ** ResourceNotFoundException+    , _ResourceNotFoundException++    -- ** InvalidPaginationTokenException+    , _InvalidPaginationTokenException++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** ListCollections+    , module Network.AWS.Rekognition.ListCollections++    -- ** DeleteCollection+    , module Network.AWS.Rekognition.DeleteCollection++    -- ** CreateCollection+    , module Network.AWS.Rekognition.CreateCollection++    -- ** DetectLabels+    , module Network.AWS.Rekognition.DetectLabels++    -- ** SearchFacesByImage+    , module Network.AWS.Rekognition.SearchFacesByImage++    -- ** SearchFaces+    , module Network.AWS.Rekognition.SearchFaces++    -- ** IndexFaces+    , module Network.AWS.Rekognition.IndexFaces++    -- ** CompareFaces+    , module Network.AWS.Rekognition.CompareFaces++    -- ** DetectFaces+    , module Network.AWS.Rekognition.DetectFaces++    -- ** ListFaces+    , module Network.AWS.Rekognition.ListFaces++    -- ** DeleteFaces+    , module Network.AWS.Rekognition.DeleteFaces++    -- * Types++    -- ** Attribute+    , Attribute (..)++    -- ** EmotionName+    , EmotionName (..)++    -- ** GenderType+    , GenderType (..)++    -- ** LandmarkType+    , LandmarkType (..)++    -- ** OrientationCorrection+    , OrientationCorrection (..)++    -- ** Beard+    , Beard+    , beard+    , bValue+    , bConfidence++    -- ** BoundingBox+    , BoundingBox+    , boundingBox+    , bbHeight+    , bbLeft+    , bbWidth+    , bbTop++    -- ** CompareFacesMatch+    , CompareFacesMatch+    , compareFacesMatch+    , cfmSimilarity+    , cfmFace++    -- ** ComparedFace+    , ComparedFace+    , comparedFace+    , cfBoundingBox+    , cfConfidence++    -- ** ComparedSourceImageFace+    , ComparedSourceImageFace+    , comparedSourceImageFace+    , csifBoundingBox+    , csifConfidence++    -- ** Emotion+    , Emotion+    , emotion+    , eConfidence+    , eType++    -- ** EyeOpen+    , EyeOpen+    , eyeOpen+    , eoValue+    , eoConfidence++    -- ** Eyeglasses+    , Eyeglasses+    , eyeglasses+    , eyeValue+    , eyeConfidence++    -- ** Face+    , Face+    , face+    , fFaceId+    , fBoundingBox+    , fExternalImageId+    , fConfidence+    , fImageId++    -- ** FaceDetail+    , FaceDetail+    , faceDetail+    , fdSunglasses+    , fdMouthOpen+    , fdBoundingBox+    , fdEmotions+    , fdEyesOpen+    , fdPose+    , fdConfidence+    , fdGender+    , fdQuality+    , fdEyeglasses+    , fdBeard+    , fdMustache+    , fdSmile+    , fdLandmarks++    -- ** FaceMatch+    , FaceMatch+    , faceMatch+    , fmSimilarity+    , fmFace++    -- ** FaceRecord+    , FaceRecord+    , faceRecord+    , frFaceDetail+    , frFace++    -- ** Gender+    , Gender+    , gender+    , gValue+    , gConfidence++    -- ** Image+    , Image+    , image+    , iS3Object+    , iBytes++    -- ** ImageQuality+    , ImageQuality+    , imageQuality+    , iqSharpness+    , iqBrightness++    -- ** Label+    , Label+    , label+    , lConfidence+    , lName++    -- ** Landmark+    , Landmark+    , landmark+    , lType+    , lX+    , lY++    -- ** MouthOpen+    , MouthOpen+    , mouthOpen+    , moValue+    , moConfidence++    -- ** Mustache+    , Mustache+    , mustache+    , mValue+    , mConfidence++    -- ** Pose+    , Pose+    , pose+    , pYaw+    , pRoll+    , pPitch++    -- ** S3Object+    , S3Object+    , s3Object+    , soBucket+    , soName+    , soVersion++    -- ** Smile+    , Smile+    , smile+    , smiValue+    , smiConfidence++    -- ** Sunglasses+    , Sunglasses+    , sunglasses+    , sValue+    , sConfidence+    ) where++import           Network.AWS.Rekognition.CompareFaces+import           Network.AWS.Rekognition.CreateCollection+import           Network.AWS.Rekognition.DeleteCollection+import           Network.AWS.Rekognition.DeleteFaces+import           Network.AWS.Rekognition.DetectFaces+import           Network.AWS.Rekognition.DetectLabels+import           Network.AWS.Rekognition.IndexFaces+import           Network.AWS.Rekognition.ListCollections+import           Network.AWS.Rekognition.ListFaces+import           Network.AWS.Rekognition.SearchFaces+import           Network.AWS.Rekognition.SearchFacesByImage+import           Network.AWS.Rekognition.Types+import           Network.AWS.Rekognition.Waiters++{- $errors+Error matchers are designed for use with the functions provided by+<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.+This allows catching (and rethrowing) service specific errors returned+by 'Rekognition'.+-}++{- $operations+Some AWS operations return results that are incomplete and require subsequent+requests in order to obtain the entire result set. The process of sending+subsequent requests to continue where a previous request left off is called+pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to+1000 objects at a time, and you must send subsequent requests with the+appropriate Marker in order to retrieve the next page of results.++Operations that have an 'AWSPager' instance can transparently perform subsequent+requests, correctly setting Markers and other request facets to iterate through+the entire result set of a truncated API operation. Operations which support+this have an additional note in the documentation.++Many operations have the ability to filter results on the server side. See the+individual operation parameters for details.+-}++{- $waiters+Waiters poll by repeatedly sending a request until some remote success condition+configured by the 'Wait' specification is fulfilled. The 'Wait' specification+determines how many attempts should be made, in addition to delay and retry strategies.+-}
+ gen/Network/AWS/Rekognition/CompareFaces.hs view
@@ -0,0 +1,174 @@+{-# 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.CompareFaces+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Compares a face in the /source/ input image with each face detected in the /target/ input image.+--+--+-- In response, the operation returns an array of face matches ordered by similarity score with the highest similarity scores first. For each face match, the response provides a bounding box of the face and @confidence@ value (indicating the level of confidence that the bounding box contains a face). The response also provides a @similarity@ score, which indicates how closely the faces match.+--+-- In addition to the face matches, the response returns information about the face in the source image, including the bounding box of the face and confidence value.+--+-- For an example, see 'get-started-exercise-compare-faces'+--+-- This operation requires permissions to perform the @rekognition:CompareFaces@ action.+--+module Network.AWS.Rekognition.CompareFaces+    (+    -- * Creating a Request+      compareFaces+    , CompareFaces+    -- * Request Lenses+    , cfSimilarityThreshold+    , cfSourceImage+    , cfTargetImage++    -- * Destructuring the Response+    , compareFacesResponse+    , CompareFacesResponse+    -- * Response Lenses+    , cfrsFaceMatches+    , cfrsSourceImageFace+    , cfrsResponseStatus+    ) 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:/ 'compareFaces' smart constructor.+data CompareFaces = CompareFaces'+    { _cfSimilarityThreshold :: !(Maybe Double)+    , _cfSourceImage         :: !Image+    , _cfTargetImage         :: !Image+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'CompareFaces' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cfSimilarityThreshold' - The minimum level of confidence in the match you want included in the result.+--+-- * 'cfSourceImage' - Source image either as bytes or an Amazon S3 object+--+-- * 'cfTargetImage' - Target image either as bytes or an Amazon S3 object+compareFaces+    :: Image -- ^ 'cfSourceImage'+    -> Image -- ^ 'cfTargetImage'+    -> CompareFaces+compareFaces pSourceImage_ pTargetImage_ =+    CompareFaces'+    { _cfSimilarityThreshold = Nothing+    , _cfSourceImage = pSourceImage_+    , _cfTargetImage = pTargetImage_+    }++-- | The minimum level of confidence in the match you want included in the result.+cfSimilarityThreshold :: Lens' CompareFaces (Maybe Double)+cfSimilarityThreshold = lens _cfSimilarityThreshold (\ s a -> s{_cfSimilarityThreshold = a});++-- | Source image either as bytes or an Amazon S3 object+cfSourceImage :: Lens' CompareFaces Image+cfSourceImage = lens _cfSourceImage (\ s a -> s{_cfSourceImage = a});++-- | Target image either as bytes or an Amazon S3 object+cfTargetImage :: Lens' CompareFaces Image+cfTargetImage = lens _cfTargetImage (\ s a -> s{_cfTargetImage = a});++instance AWSRequest CompareFaces where+        type Rs CompareFaces = CompareFacesResponse+        request = postJSON rekognition+        response+          = receiveJSON+              (\ s h x ->+                 CompareFacesResponse' <$>+                   (x .?> "FaceMatches" .!@ mempty) <*>+                     (x .?> "SourceImageFace")+                     <*> (pure (fromEnum s)))++instance Hashable CompareFaces++instance NFData CompareFaces++instance ToHeaders CompareFaces where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("RekognitionService.CompareFaces" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CompareFaces where+        toJSON CompareFaces'{..}+          = object+              (catMaybes+                 [("SimilarityThreshold" .=) <$>+                    _cfSimilarityThreshold,+                  Just ("SourceImage" .= _cfSourceImage),+                  Just ("TargetImage" .= _cfTargetImage)])++instance ToPath CompareFaces where+        toPath = const "/"++instance ToQuery CompareFaces where+        toQuery = const mempty++-- | /See:/ 'compareFacesResponse' smart constructor.+data CompareFacesResponse = CompareFacesResponse'+    { _cfrsFaceMatches     :: !(Maybe [CompareFacesMatch])+    , _cfrsSourceImageFace :: !(Maybe ComparedSourceImageFace)+    , _cfrsResponseStatus  :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'CompareFacesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cfrsFaceMatches' - Provides an array of @CompareFacesMatch @ objects. Each object provides the bounding box, confidence that the bounding box contains a face, and the similarity between the face in the bounding box and the face in the source image.+--+-- * 'cfrsSourceImageFace' - The face from the source image that was used for comparison.+--+-- * 'cfrsResponseStatus' - -- | The response status code.+compareFacesResponse+    :: Int -- ^ 'cfrsResponseStatus'+    -> CompareFacesResponse+compareFacesResponse pResponseStatus_ =+    CompareFacesResponse'+    { _cfrsFaceMatches = Nothing+    , _cfrsSourceImageFace = Nothing+    , _cfrsResponseStatus = pResponseStatus_+    }++-- | Provides an array of @CompareFacesMatch @ objects. Each object provides the bounding box, confidence that the bounding box contains a face, and the similarity between the face in the bounding box and the face in the source image.+cfrsFaceMatches :: Lens' CompareFacesResponse [CompareFacesMatch]+cfrsFaceMatches = lens _cfrsFaceMatches (\ s a -> s{_cfrsFaceMatches = a}) . _Default . _Coerce;++-- | The face from the source image that was used for comparison.+cfrsSourceImageFace :: Lens' CompareFacesResponse (Maybe ComparedSourceImageFace)+cfrsSourceImageFace = lens _cfrsSourceImageFace (\ s a -> s{_cfrsSourceImageFace = a});++-- | -- | The response status code.+cfrsResponseStatus :: Lens' CompareFacesResponse Int+cfrsResponseStatus = lens _cfrsResponseStatus (\ s a -> s{_cfrsResponseStatus = a});++instance NFData CompareFacesResponse
+ gen/Network/AWS/Rekognition/CreateCollection.hs view
@@ -0,0 +1,150 @@+{-# 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.CreateCollection+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a collection in an AWS region. You can add faces to the collection using the operation.+--+--+-- For example, you might create collections, one for each of your application users. A user can then index faces using the @IndexFaces@ operation and persist results in a specific collection. Then, a user can search the collection for faces in the user-specific container.+--+-- For an example, see 'example1' .+--+-- This operation requires permissions to perform the @rekognition:CreateCollection@ action.+--+module Network.AWS.Rekognition.CreateCollection+    (+    -- * Creating a Request+      createCollection+    , CreateCollection+    -- * Request Lenses+    , ccCollectionId++    -- * Destructuring the Response+    , createCollectionResponse+    , CreateCollectionResponse+    -- * Response Lenses+    , ccrsCollectionARN+    , ccrsStatusCode+    , ccrsResponseStatus+    ) 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:/ 'createCollection' smart constructor.+newtype CreateCollection = CreateCollection'+    { _ccCollectionId :: Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'CreateCollection' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ccCollectionId' - ID for the collection that you are creating.+createCollection+    :: Text -- ^ 'ccCollectionId'+    -> CreateCollection+createCollection pCollectionId_ =+    CreateCollection'+    { _ccCollectionId = pCollectionId_+    }++-- | ID for the collection that you are creating.+ccCollectionId :: Lens' CreateCollection Text+ccCollectionId = lens _ccCollectionId (\ s a -> s{_ccCollectionId = a});++instance AWSRequest CreateCollection where+        type Rs CreateCollection = CreateCollectionResponse+        request = postJSON rekognition+        response+          = receiveJSON+              (\ s h x ->+                 CreateCollectionResponse' <$>+                   (x .?> "CollectionArn") <*> (x .?> "StatusCode") <*>+                     (pure (fromEnum s)))++instance Hashable CreateCollection++instance NFData CreateCollection++instance ToHeaders CreateCollection where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("RekognitionService.CreateCollection" ::+                       ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateCollection where+        toJSON CreateCollection'{..}+          = object+              (catMaybes+                 [Just ("CollectionId" .= _ccCollectionId)])++instance ToPath CreateCollection where+        toPath = const "/"++instance ToQuery CreateCollection where+        toQuery = const mempty++-- | /See:/ 'createCollectionResponse' smart constructor.+data CreateCollectionResponse = CreateCollectionResponse'+    { _ccrsCollectionARN  :: !(Maybe Text)+    , _ccrsStatusCode     :: !(Maybe Nat)+    , _ccrsResponseStatus :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'CreateCollectionResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ccrsCollectionARN' - Amazon Resource Name (ARN) of the collection. You can use this to manage permissions on your resources.+--+-- * 'ccrsStatusCode' - HTTP status code indicating the result of the operation.+--+-- * 'ccrsResponseStatus' - -- | The response status code.+createCollectionResponse+    :: Int -- ^ 'ccrsResponseStatus'+    -> CreateCollectionResponse+createCollectionResponse pResponseStatus_ =+    CreateCollectionResponse'+    { _ccrsCollectionARN = Nothing+    , _ccrsStatusCode = Nothing+    , _ccrsResponseStatus = pResponseStatus_+    }++-- | Amazon Resource Name (ARN) of the collection. You can use this to manage permissions on your resources.+ccrsCollectionARN :: Lens' CreateCollectionResponse (Maybe Text)+ccrsCollectionARN = lens _ccrsCollectionARN (\ s a -> s{_ccrsCollectionARN = a});++-- | HTTP status code indicating the result of the operation.+ccrsStatusCode :: Lens' CreateCollectionResponse (Maybe Natural)+ccrsStatusCode = lens _ccrsStatusCode (\ s a -> s{_ccrsStatusCode = a}) . mapping _Nat;++-- | -- | The response status code.+ccrsResponseStatus :: Lens' CreateCollectionResponse Int+ccrsResponseStatus = lens _ccrsResponseStatus (\ s a -> s{_ccrsResponseStatus = a});++instance NFData CreateCollectionResponse
+ gen/Network/AWS/Rekognition/DeleteCollection.hs view
@@ -0,0 +1,136 @@+{-# 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.DeleteCollection+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the specified collection. Note that this operation removes all faces in the collection. For an example, see 'example1' .+--+--+-- This operation requires permissions to perform the @rekognition:DeleteCollection@ action.+--+module Network.AWS.Rekognition.DeleteCollection+    (+    -- * Creating a Request+      deleteCollection+    , DeleteCollection+    -- * Request Lenses+    , dcCollectionId++    -- * Destructuring the Response+    , deleteCollectionResponse+    , DeleteCollectionResponse+    -- * Response Lenses+    , dcrsStatusCode+    , dcrsResponseStatus+    ) 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:/ 'deleteCollection' smart constructor.+newtype DeleteCollection = DeleteCollection'+    { _dcCollectionId :: Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteCollection' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dcCollectionId' - ID of the collection to delete.+deleteCollection+    :: Text -- ^ 'dcCollectionId'+    -> DeleteCollection+deleteCollection pCollectionId_ =+    DeleteCollection'+    { _dcCollectionId = pCollectionId_+    }++-- | ID of the collection to delete.+dcCollectionId :: Lens' DeleteCollection Text+dcCollectionId = lens _dcCollectionId (\ s a -> s{_dcCollectionId = a});++instance AWSRequest DeleteCollection where+        type Rs DeleteCollection = DeleteCollectionResponse+        request = postJSON rekognition+        response+          = receiveJSON+              (\ s h x ->+                 DeleteCollectionResponse' <$>+                   (x .?> "StatusCode") <*> (pure (fromEnum s)))++instance Hashable DeleteCollection++instance NFData DeleteCollection++instance ToHeaders DeleteCollection where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("RekognitionService.DeleteCollection" ::+                       ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteCollection where+        toJSON DeleteCollection'{..}+          = object+              (catMaybes+                 [Just ("CollectionId" .= _dcCollectionId)])++instance ToPath DeleteCollection where+        toPath = const "/"++instance ToQuery DeleteCollection where+        toQuery = const mempty++-- | /See:/ 'deleteCollectionResponse' smart constructor.+data DeleteCollectionResponse = DeleteCollectionResponse'+    { _dcrsStatusCode     :: !(Maybe Nat)+    , _dcrsResponseStatus :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteCollectionResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dcrsStatusCode' - HTTP status code that indicates the result of the operation.+--+-- * 'dcrsResponseStatus' - -- | The response status code.+deleteCollectionResponse+    :: Int -- ^ 'dcrsResponseStatus'+    -> DeleteCollectionResponse+deleteCollectionResponse pResponseStatus_ =+    DeleteCollectionResponse'+    { _dcrsStatusCode = Nothing+    , _dcrsResponseStatus = pResponseStatus_+    }++-- | HTTP status code that indicates the result of the operation.+dcrsStatusCode :: Lens' DeleteCollectionResponse (Maybe Natural)+dcrsStatusCode = lens _dcrsStatusCode (\ s a -> s{_dcrsStatusCode = a}) . mapping _Nat;++-- | -- | The response status code.+dcrsResponseStatus :: Lens' DeleteCollectionResponse Int+dcrsResponseStatus = lens _dcrsResponseStatus (\ s a -> s{_dcrsResponseStatus = a});++instance NFData DeleteCollectionResponse
+ gen/Network/AWS/Rekognition/DeleteFaces.hs view
@@ -0,0 +1,146 @@+{-# 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.DeleteFaces+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes faces from a collection. You specify a collection ID and an array of face IDs to remove from the collection.+--+--+-- This operation requires permissions to perform the @rekognition:DeleteFaces@ action.+--+module Network.AWS.Rekognition.DeleteFaces+    (+    -- * Creating a Request+      deleteFaces+    , DeleteFaces+    -- * Request Lenses+    , dfCollectionId+    , dfFaceIds++    -- * Destructuring the Response+    , deleteFacesResponse+    , DeleteFacesResponse+    -- * Response Lenses+    , drsDeletedFaces+    , drsResponseStatus+    ) 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:/ 'deleteFaces' smart constructor.+data DeleteFaces = DeleteFaces'+    { _dfCollectionId :: !Text+    , _dfFaceIds      :: !(List1 Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteFaces' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dfCollectionId' - Collection from which to remove the specific faces.+--+-- * 'dfFaceIds' - An array of face IDs to delete.+deleteFaces+    :: Text -- ^ 'dfCollectionId'+    -> NonEmpty Text -- ^ 'dfFaceIds'+    -> DeleteFaces+deleteFaces pCollectionId_ pFaceIds_ =+    DeleteFaces'+    { _dfCollectionId = pCollectionId_+    , _dfFaceIds = _List1 # pFaceIds_+    }++-- | Collection from which to remove the specific faces.+dfCollectionId :: Lens' DeleteFaces Text+dfCollectionId = lens _dfCollectionId (\ s a -> s{_dfCollectionId = a});++-- | An array of face IDs to delete.+dfFaceIds :: Lens' DeleteFaces (NonEmpty Text)+dfFaceIds = lens _dfFaceIds (\ s a -> s{_dfFaceIds = a}) . _List1;++instance AWSRequest DeleteFaces where+        type Rs DeleteFaces = DeleteFacesResponse+        request = postJSON rekognition+        response+          = receiveJSON+              (\ s h x ->+                 DeleteFacesResponse' <$>+                   (x .?> "DeletedFaces") <*> (pure (fromEnum s)))++instance Hashable DeleteFaces++instance NFData DeleteFaces++instance ToHeaders DeleteFaces where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("RekognitionService.DeleteFaces" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteFaces where+        toJSON DeleteFaces'{..}+          = object+              (catMaybes+                 [Just ("CollectionId" .= _dfCollectionId),+                  Just ("FaceIds" .= _dfFaceIds)])++instance ToPath DeleteFaces where+        toPath = const "/"++instance ToQuery DeleteFaces where+        toQuery = const mempty++-- | /See:/ 'deleteFacesResponse' smart constructor.+data DeleteFacesResponse = DeleteFacesResponse'+    { _drsDeletedFaces   :: !(Maybe (List1 Text))+    , _drsResponseStatus :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteFacesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drsDeletedFaces' - An array of strings (face IDs) of the faces that were deleted.+--+-- * 'drsResponseStatus' - -- | The response status code.+deleteFacesResponse+    :: Int -- ^ 'drsResponseStatus'+    -> DeleteFacesResponse+deleteFacesResponse pResponseStatus_ =+    DeleteFacesResponse'+    { _drsDeletedFaces = Nothing+    , _drsResponseStatus = pResponseStatus_+    }++-- | An array of strings (face IDs) of the faces that were deleted.+drsDeletedFaces :: Lens' DeleteFacesResponse (Maybe (NonEmpty Text))+drsDeletedFaces = lens _drsDeletedFaces (\ s a -> s{_drsDeletedFaces = a}) . mapping _List1;++-- | -- | The response status code.+drsResponseStatus :: Lens' DeleteFacesResponse Int+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});++instance NFData DeleteFacesResponse
+ gen/Network/AWS/Rekognition/DetectFaces.hs view
@@ -0,0 +1,162 @@+{-# 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.DetectFaces+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Detects faces within an image (JPEG or PNG) that is provided as input.+--+--+-- For each face detected, the operation returns face details including a bounding box of the face, a confidence value (that the bounding box contains a face), and a fixed set of attributes such as facial landmarks (for example, coordinates of eye and mouth), gender, presence of beard, sunglasses, etc.+--+-- The face-detection algorithm is most effective on frontal faces. For non-frontal or obscured faces, the algorithm may not detect the faces or might detect faces with lower confidence.+--+-- For an example, see 'get-started-exercise-detect-faces' .+--+-- This operation requires permissions to perform the @rekognition:DetectFaces@ action.+--+module Network.AWS.Rekognition.DetectFaces+    (+    -- * Creating a Request+      detectFaces+    , DetectFaces+    -- * Request Lenses+    , dfAttributes+    , dfImage++    -- * Destructuring the Response+    , detectFacesResponse+    , DetectFacesResponse+    -- * Response Lenses+    , dfrsOrientationCorrection+    , dfrsFaceDetails+    , dfrsResponseStatus+    ) 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:/ 'detectFaces' smart constructor.+data DetectFaces = DetectFaces'+    { _dfAttributes :: !(Maybe [Attribute])+    , _dfImage      :: !Image+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DetectFaces' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dfAttributes' - A list of facial attributes you would like to be returned. By default, the API returns subset of facial attributes.  For example, you can specify the value as, ["ALL"] or ["DEFAULT"]. If you provide both, ["ALL", "DEFAULT"], the service uses a logical AND operator to determine which attributes to return (in this case, it is all attributes). If you specify all attributes, Rekognition performs additional detection.+--+-- * 'dfImage' - The image in which you want to detect faces. You can specify a blob or an S3 object.+detectFaces+    :: Image -- ^ 'dfImage'+    -> DetectFaces+detectFaces pImage_ =+    DetectFaces'+    { _dfAttributes = Nothing+    , _dfImage = pImage_+    }++-- | A list of facial attributes you would like to be returned. By default, the API returns subset of facial attributes.  For example, you can specify the value as, ["ALL"] or ["DEFAULT"]. If you provide both, ["ALL", "DEFAULT"], the service uses a logical AND operator to determine which attributes to return (in this case, it is all attributes). If you specify all attributes, Rekognition performs additional detection.+dfAttributes :: Lens' DetectFaces [Attribute]+dfAttributes = lens _dfAttributes (\ s a -> s{_dfAttributes = a}) . _Default . _Coerce;++-- | The image in which you want to detect faces. You can specify a blob or an S3 object.+dfImage :: Lens' DetectFaces Image+dfImage = lens _dfImage (\ s a -> s{_dfImage = a});++instance AWSRequest DetectFaces where+        type Rs DetectFaces = DetectFacesResponse+        request = postJSON rekognition+        response+          = receiveJSON+              (\ s h x ->+                 DetectFacesResponse' <$>+                   (x .?> "OrientationCorrection") <*>+                     (x .?> "FaceDetails" .!@ mempty)+                     <*> (pure (fromEnum s)))++instance Hashable DetectFaces++instance NFData DetectFaces++instance ToHeaders DetectFaces where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("RekognitionService.DetectFaces" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DetectFaces where+        toJSON DetectFaces'{..}+          = object+              (catMaybes+                 [("Attributes" .=) <$> _dfAttributes,+                  Just ("Image" .= _dfImage)])++instance ToPath DetectFaces where+        toPath = const "/"++instance ToQuery DetectFaces where+        toQuery = const mempty++-- | /See:/ 'detectFacesResponse' smart constructor.+data DetectFacesResponse = DetectFacesResponse'+    { _dfrsOrientationCorrection :: !(Maybe OrientationCorrection)+    , _dfrsFaceDetails           :: !(Maybe [FaceDetail])+    , _dfrsResponseStatus        :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DetectFacesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dfrsOrientationCorrection' - The algorithm detects the image orientation. If it detects that the image was rotated, it returns the degrees of rotation. If your application is displaying the image, you can use this value to adjust the orientation.  For example, if the service detects that the input image was rotated by 90 degrees, it corrects orientation, performs face detection, and then returns the faces. That is, the bounding box coordinates in the response are based on the corrected orientation.+--+-- * 'dfrsFaceDetails' - Details of each face found in the image.+--+-- * 'dfrsResponseStatus' - -- | The response status code.+detectFacesResponse+    :: Int -- ^ 'dfrsResponseStatus'+    -> DetectFacesResponse+detectFacesResponse pResponseStatus_ =+    DetectFacesResponse'+    { _dfrsOrientationCorrection = Nothing+    , _dfrsFaceDetails = Nothing+    , _dfrsResponseStatus = pResponseStatus_+    }++-- | The algorithm detects the image orientation. If it detects that the image was rotated, it returns the degrees of rotation. If your application is displaying the image, you can use this value to adjust the orientation.  For example, if the service detects that the input image was rotated by 90 degrees, it corrects orientation, performs face detection, and then returns the faces. That is, the bounding box coordinates in the response are based on the corrected orientation.+dfrsOrientationCorrection :: Lens' DetectFacesResponse (Maybe OrientationCorrection)+dfrsOrientationCorrection = lens _dfrsOrientationCorrection (\ s a -> s{_dfrsOrientationCorrection = a});++-- | Details of each face found in the image.+dfrsFaceDetails :: Lens' DetectFacesResponse [FaceDetail]+dfrsFaceDetails = lens _dfrsFaceDetails (\ s a -> s{_dfrsFaceDetails = a}) . _Default . _Coerce;++-- | -- | The response status code.+dfrsResponseStatus :: Lens' DetectFacesResponse Int+dfrsResponseStatus = lens _dfrsResponseStatus (\ s a -> s{_dfrsResponseStatus = a});++instance NFData DetectFacesResponse
+ gen/Network/AWS/Rekognition/DetectLabels.hs view
@@ -0,0 +1,188 @@+{-# 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.DetectLabels+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Detects instances of real-world labels within an image (JPEG or PNG) provided as input. This includes objects like flower, tree, and table; events like wedding, graduation, and birthday party; and concepts like landscape, evening, and nature. For an example, see 'get-started-exercise-detect-labels' .+--+--+-- For each object, scene, and concept the API returns one or more labels. Each label provides the object name, and the level of confidence that the image contains the object. For example, suppose the input image has a lighthouse, the sea, and a rock. The response will include all three labels, one for each object.+--+-- @{Name: lighthouse, Confidence: 98.4629}@+--+-- @{Name: rock,Confidence: 79.2097}@+--+-- @{Name: sea,Confidence: 75.061}@+--+-- In the preceding example, the operation returns one label for each of the three objects. The operation can also return multiple labels for the same object in the image. For example, if the input image shows a flower (for example, a tulip), the operation might return the following three labels.+--+-- @{Name: flower,Confidence: 99.0562}@+--+-- @{Name: plant,Confidence: 99.0562}@+--+-- @{Name: tulip,Confidence: 99.0562}@+--+-- In this example, the detection algorithm more precisely identifies the flower as a tulip.+--+-- You can provide the input image as an S3 object or as base64-encoded bytes. In response, the API returns an array of labels. In addition, the response also includes the orientation correction. Optionally, you can specify @MinConfidence@ to control the confidence threshold for the labels returned. The default is 50%. You can also add the @MaxLabels@ parameter to limit the number of labels returned.+--+-- This is a stateless API operation. That is, the operation does not persist any data.+--+-- This operation requires permissions to perform the @rekognition:DetectLabels@ action.+--+module Network.AWS.Rekognition.DetectLabels+    (+    -- * Creating a Request+      detectLabels+    , DetectLabels+    -- * Request Lenses+    , dlMinConfidence+    , dlMaxLabels+    , dlImage++    -- * Destructuring the Response+    , detectLabelsResponse+    , DetectLabelsResponse+    -- * Response Lenses+    , dlrsLabels+    , dlrsOrientationCorrection+    , dlrsResponseStatus+    ) 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:/ 'detectLabels' smart constructor.+data DetectLabels = DetectLabels'+    { _dlMinConfidence :: !(Maybe Double)+    , _dlMaxLabels     :: !(Maybe Nat)+    , _dlImage         :: !Image+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DetectLabels' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dlMinConfidence' - Specifies the minimum confidence level for the labels to return. Amazon Rekognition doesn't return any labels with confidence lower than this specified value. If @minConfidence@ is not specified, the operation returns labels with a confidence values greater than or equal to 50 percent.+--+-- * 'dlMaxLabels' - Maximum number of labels you want the service to return in the response. The service returns the specified number of highest confidence labels.+--+-- * 'dlImage' - The input image. You can provide a blob of image bytes or an S3 object.+detectLabels+    :: Image -- ^ 'dlImage'+    -> DetectLabels+detectLabels pImage_ =+    DetectLabels'+    { _dlMinConfidence = Nothing+    , _dlMaxLabels = Nothing+    , _dlImage = pImage_+    }++-- | Specifies the minimum confidence level for the labels to return. Amazon Rekognition doesn't return any labels with confidence lower than this specified value. If @minConfidence@ is not specified, the operation returns labels with a confidence values greater than or equal to 50 percent.+dlMinConfidence :: Lens' DetectLabels (Maybe Double)+dlMinConfidence = lens _dlMinConfidence (\ s a -> s{_dlMinConfidence = a});++-- | Maximum number of labels you want the service to return in the response. The service returns the specified number of highest confidence labels.+dlMaxLabels :: Lens' DetectLabels (Maybe Natural)+dlMaxLabels = lens _dlMaxLabels (\ s a -> s{_dlMaxLabels = a}) . mapping _Nat;++-- | The input image. You can provide a blob of image bytes or an S3 object.+dlImage :: Lens' DetectLabels Image+dlImage = lens _dlImage (\ s a -> s{_dlImage = a});++instance AWSRequest DetectLabels where+        type Rs DetectLabels = DetectLabelsResponse+        request = postJSON rekognition+        response+          = receiveJSON+              (\ s h x ->+                 DetectLabelsResponse' <$>+                   (x .?> "Labels" .!@ mempty) <*>+                     (x .?> "OrientationCorrection")+                     <*> (pure (fromEnum s)))++instance Hashable DetectLabels++instance NFData DetectLabels++instance ToHeaders DetectLabels where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("RekognitionService.DetectLabels" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DetectLabels where+        toJSON DetectLabels'{..}+          = object+              (catMaybes+                 [("MinConfidence" .=) <$> _dlMinConfidence,+                  ("MaxLabels" .=) <$> _dlMaxLabels,+                  Just ("Image" .= _dlImage)])++instance ToPath DetectLabels where+        toPath = const "/"++instance ToQuery DetectLabels where+        toQuery = const mempty++-- | /See:/ 'detectLabelsResponse' smart constructor.+data DetectLabelsResponse = DetectLabelsResponse'+    { _dlrsLabels                :: !(Maybe [Label])+    , _dlrsOrientationCorrection :: !(Maybe OrientationCorrection)+    , _dlrsResponseStatus        :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DetectLabelsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dlrsLabels' - An array of labels for the real-world objects detected.+--+-- * 'dlrsOrientationCorrection' - Amazon Rekognition returns the orientation of the input image that was detected (clockwise direction). If your application displays the image, you can use this value to correct the orientation. If Rekognition detects that the input image was rotated (for example, by 90 degrees), it first corrects the orientation before detecting the labels.+--+-- * 'dlrsResponseStatus' - -- | The response status code.+detectLabelsResponse+    :: Int -- ^ 'dlrsResponseStatus'+    -> DetectLabelsResponse+detectLabelsResponse pResponseStatus_ =+    DetectLabelsResponse'+    { _dlrsLabels = Nothing+    , _dlrsOrientationCorrection = Nothing+    , _dlrsResponseStatus = pResponseStatus_+    }++-- | An array of labels for the real-world objects detected.+dlrsLabels :: Lens' DetectLabelsResponse [Label]+dlrsLabels = lens _dlrsLabels (\ s a -> s{_dlrsLabels = a}) . _Default . _Coerce;++-- | Amazon Rekognition returns the orientation of the input image that was detected (clockwise direction). If your application displays the image, you can use this value to correct the orientation. If Rekognition detects that the input image was rotated (for example, by 90 degrees), it first corrects the orientation before detecting the labels.+dlrsOrientationCorrection :: Lens' DetectLabelsResponse (Maybe OrientationCorrection)+dlrsOrientationCorrection = lens _dlrsOrientationCorrection (\ s a -> s{_dlrsOrientationCorrection = a});++-- | -- | The response status code.+dlrsResponseStatus :: Lens' DetectLabelsResponse Int+dlrsResponseStatus = lens _dlrsResponseStatus (\ s a -> s{_dlrsResponseStatus = a});++instance NFData DetectLabelsResponse
+ gen/Network/AWS/Rekognition/IndexFaces.hs view
@@ -0,0 +1,186 @@+{-# 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.IndexFaces+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Detects faces in the input image and adds them to the specified collection.+--+--+-- Amazon Rekognition does not save the actual faces detected. Instead, the underlying detection algorithm first detects the faces in the input image, and for each face extracts facial features into a feature vector, and stores it in the back-end database. Amazon Rekognition uses feature vectors when performing face match and search operations using the and operations.+--+-- If you provide the optional @externalImageID@ for the input image you provided, Amazon Rekognition associates this ID with all faces that it detects. When you call the operation, the response returns the external ID. You can use this external image ID to create a client-side index to associate the faces with each image. You can then use the index to find all faces in an image.+--+-- In response, the operation returns an array of metadata for all detected faces. This includes, the bounding box of the detected face, confidence value (indicating the bounding box contains a face), a face ID assigned by the service for each face that is detected and stored, and an image ID assigned by the service for the input image If you request all facial attributes (using the @detectionAttributes@ parameter, Rekognition returns detailed facial attributes such as facial landmarks (for example, location of eye and mount) and other facial attributes such gender. If you provide the same image, specify the same collection, and use the same external ID in the @IndexFaces@ operation, Rekognition doesn't save duplicate face metadata.+--+-- For an example, see 'example2' .+--+-- This operation requires permissions to perform the @rekognition:IndexFaces@ action.+--+module Network.AWS.Rekognition.IndexFaces+    (+    -- * Creating a Request+      indexFaces+    , IndexFaces+    -- * Request Lenses+    , ifExternalImageId+    , ifDetectionAttributes+    , ifCollectionId+    , ifImage++    -- * Destructuring the Response+    , indexFacesResponse+    , IndexFacesResponse+    -- * Response Lenses+    , ifrsFaceRecords+    , ifrsOrientationCorrection+    , ifrsResponseStatus+    ) 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:/ 'indexFaces' smart constructor.+data IndexFaces = IndexFaces'+    { _ifExternalImageId     :: !(Maybe Text)+    , _ifDetectionAttributes :: !(Maybe [Attribute])+    , _ifCollectionId        :: !Text+    , _ifImage               :: !Image+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'IndexFaces' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ifExternalImageId' - ID you want to assign to all the faces detected in the image.+--+-- * 'ifDetectionAttributes' - (Optional) Returns detailed attributes of indexed faces. By default, the operation returns a subset of the facial attributes.  For example, you can specify the value as, ["ALL"] or ["DEFAULT"]. If you provide both, ["ALL", "DEFAULT"], Rekognition uses the logical AND operator to determine which attributes to return (in this case, it is all attributes). If you specify all attributes, the service performs additional detection, in addition to the default.+--+-- * 'ifCollectionId' - ID of an existing collection to which you want to add the faces that are detected in the input images.+--+-- * 'ifImage' - Undocumented member.+indexFaces+    :: Text -- ^ 'ifCollectionId'+    -> Image -- ^ 'ifImage'+    -> IndexFaces+indexFaces pCollectionId_ pImage_ =+    IndexFaces'+    { _ifExternalImageId = Nothing+    , _ifDetectionAttributes = Nothing+    , _ifCollectionId = pCollectionId_+    , _ifImage = pImage_+    }++-- | ID you want to assign to all the faces detected in the image.+ifExternalImageId :: Lens' IndexFaces (Maybe Text)+ifExternalImageId = lens _ifExternalImageId (\ s a -> s{_ifExternalImageId = a});++-- | (Optional) Returns detailed attributes of indexed faces. By default, the operation returns a subset of the facial attributes.  For example, you can specify the value as, ["ALL"] or ["DEFAULT"]. If you provide both, ["ALL", "DEFAULT"], Rekognition uses the logical AND operator to determine which attributes to return (in this case, it is all attributes). If you specify all attributes, the service performs additional detection, in addition to the default.+ifDetectionAttributes :: Lens' IndexFaces [Attribute]+ifDetectionAttributes = lens _ifDetectionAttributes (\ s a -> s{_ifDetectionAttributes = a}) . _Default . _Coerce;++-- | ID of an existing collection to which you want to add the faces that are detected in the input images.+ifCollectionId :: Lens' IndexFaces Text+ifCollectionId = lens _ifCollectionId (\ s a -> s{_ifCollectionId = a});++-- | Undocumented member.+ifImage :: Lens' IndexFaces Image+ifImage = lens _ifImage (\ s a -> s{_ifImage = a});++instance AWSRequest IndexFaces where+        type Rs IndexFaces = IndexFacesResponse+        request = postJSON rekognition+        response+          = receiveJSON+              (\ s h x ->+                 IndexFacesResponse' <$>+                   (x .?> "FaceRecords" .!@ mempty) <*>+                     (x .?> "OrientationCorrection")+                     <*> (pure (fromEnum s)))++instance Hashable IndexFaces++instance NFData IndexFaces++instance ToHeaders IndexFaces where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("RekognitionService.IndexFaces" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON IndexFaces where+        toJSON IndexFaces'{..}+          = object+              (catMaybes+                 [("ExternalImageId" .=) <$> _ifExternalImageId,+                  ("DetectionAttributes" .=) <$>+                    _ifDetectionAttributes,+                  Just ("CollectionId" .= _ifCollectionId),+                  Just ("Image" .= _ifImage)])++instance ToPath IndexFaces where+        toPath = const "/"++instance ToQuery IndexFaces where+        toQuery = const mempty++-- | /See:/ 'indexFacesResponse' smart constructor.+data IndexFacesResponse = IndexFacesResponse'+    { _ifrsFaceRecords           :: !(Maybe [FaceRecord])+    , _ifrsOrientationCorrection :: !(Maybe OrientationCorrection)+    , _ifrsResponseStatus        :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'IndexFacesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ifrsFaceRecords' - An array of faces detected and added to the collection. For more information, see 'howitworks-index-faces' .+--+-- * 'ifrsOrientationCorrection' - The algorithm detects the image orientation. If it detects that the image was rotated, it returns the degree of rotation. You can use this value to correct the orientation and also appropriately analyze the bounding box coordinates that are returned.+--+-- * 'ifrsResponseStatus' - -- | The response status code.+indexFacesResponse+    :: Int -- ^ 'ifrsResponseStatus'+    -> IndexFacesResponse+indexFacesResponse pResponseStatus_ =+    IndexFacesResponse'+    { _ifrsFaceRecords = Nothing+    , _ifrsOrientationCorrection = Nothing+    , _ifrsResponseStatus = pResponseStatus_+    }++-- | An array of faces detected and added to the collection. For more information, see 'howitworks-index-faces' .+ifrsFaceRecords :: Lens' IndexFacesResponse [FaceRecord]+ifrsFaceRecords = lens _ifrsFaceRecords (\ s a -> s{_ifrsFaceRecords = a}) . _Default . _Coerce;++-- | The algorithm detects the image orientation. If it detects that the image was rotated, it returns the degree of rotation. You can use this value to correct the orientation and also appropriately analyze the bounding box coordinates that are returned.+ifrsOrientationCorrection :: Lens' IndexFacesResponse (Maybe OrientationCorrection)+ifrsOrientationCorrection = lens _ifrsOrientationCorrection (\ s a -> s{_ifrsOrientationCorrection = a});++-- | -- | The response status code.+ifrsResponseStatus :: Lens' IndexFacesResponse Int+ifrsResponseStatus = lens _ifrsResponseStatus (\ s a -> s{_ifrsResponseStatus = a});++instance NFData IndexFacesResponse
+ gen/Network/AWS/Rekognition/ListCollections.hs view
@@ -0,0 +1,157 @@+{-# 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.ListCollections+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns list of collection IDs in your account. If the result is truncated, the response also provides a @NextToken@ that you can use in the subsequent request to fetch the next set of collection IDs.+--+--+-- For an example, see 'example1' .+--+-- This operation requires permissions to perform the @rekognition:ListCollections@ action.+--+module Network.AWS.Rekognition.ListCollections+    (+    -- * Creating a Request+      listCollections+    , ListCollections+    -- * Request Lenses+    , lcNextToken+    , lcMaxResults++    -- * Destructuring the Response+    , listCollectionsResponse+    , ListCollectionsResponse+    -- * Response Lenses+    , lcrsCollectionIds+    , lcrsNextToken+    , lcrsResponseStatus+    ) 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:/ 'listCollections' smart constructor.+data ListCollections = ListCollections'+    { _lcNextToken  :: !(Maybe Text)+    , _lcMaxResults :: !(Maybe Nat)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListCollections' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lcNextToken' - Pagination token from the previous response.+--+-- * 'lcMaxResults' - Maximum number of collection IDs to return.+listCollections+    :: ListCollections+listCollections =+    ListCollections'+    { _lcNextToken = Nothing+    , _lcMaxResults = Nothing+    }++-- | Pagination token from the previous response.+lcNextToken :: Lens' ListCollections (Maybe Text)+lcNextToken = lens _lcNextToken (\ s a -> s{_lcNextToken = a});++-- | Maximum number of collection IDs to return.+lcMaxResults :: Lens' ListCollections (Maybe Natural)+lcMaxResults = lens _lcMaxResults (\ s a -> s{_lcMaxResults = a}) . mapping _Nat;++instance AWSRequest ListCollections where+        type Rs ListCollections = ListCollectionsResponse+        request = postJSON rekognition+        response+          = receiveJSON+              (\ s h x ->+                 ListCollectionsResponse' <$>+                   (x .?> "CollectionIds" .!@ mempty) <*>+                     (x .?> "NextToken")+                     <*> (pure (fromEnum s)))++instance Hashable ListCollections++instance NFData ListCollections++instance ToHeaders ListCollections where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("RekognitionService.ListCollections" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListCollections where+        toJSON ListCollections'{..}+          = object+              (catMaybes+                 [("NextToken" .=) <$> _lcNextToken,+                  ("MaxResults" .=) <$> _lcMaxResults])++instance ToPath ListCollections where+        toPath = const "/"++instance ToQuery ListCollections where+        toQuery = const mempty++-- | /See:/ 'listCollectionsResponse' smart constructor.+data ListCollectionsResponse = ListCollectionsResponse'+    { _lcrsCollectionIds  :: !(Maybe [Text])+    , _lcrsNextToken      :: !(Maybe Text)+    , _lcrsResponseStatus :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListCollectionsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lcrsCollectionIds' - An array of collection IDs.+--+-- * 'lcrsNextToken' - If the result is truncated, the response provides a @NextToken@ that you can use in the subsequent request to fetch the next set of collection IDs.+--+-- * 'lcrsResponseStatus' - -- | The response status code.+listCollectionsResponse+    :: Int -- ^ 'lcrsResponseStatus'+    -> ListCollectionsResponse+listCollectionsResponse pResponseStatus_ =+    ListCollectionsResponse'+    { _lcrsCollectionIds = Nothing+    , _lcrsNextToken = Nothing+    , _lcrsResponseStatus = pResponseStatus_+    }++-- | An array of collection IDs.+lcrsCollectionIds :: Lens' ListCollectionsResponse [Text]+lcrsCollectionIds = lens _lcrsCollectionIds (\ s a -> s{_lcrsCollectionIds = a}) . _Default . _Coerce;++-- | If the result is truncated, the response provides a @NextToken@ that you can use in the subsequent request to fetch the next set of collection IDs.+lcrsNextToken :: Lens' ListCollectionsResponse (Maybe Text)+lcrsNextToken = lens _lcrsNextToken (\ s a -> s{_lcrsNextToken = a});++-- | -- | The response status code.+lcrsResponseStatus :: Lens' ListCollectionsResponse Int+lcrsResponseStatus = lens _lcrsResponseStatus (\ s a -> s{_lcrsResponseStatus = a});++instance NFData ListCollectionsResponse
+ gen/Network/AWS/Rekognition/ListFaces.hs view
@@ -0,0 +1,165 @@+{-# 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.ListFaces+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns metadata for faces in the specified collection. This metadata includes information such as the bounding box coordinates, the confidence (that the bounding box contains a face), and face ID. For an example, see 'example3' .+--+--+-- This operation requires permissions to perform the @rekognition:ListFaces@ action.+--+module Network.AWS.Rekognition.ListFaces+    (+    -- * Creating a Request+      listFaces+    , ListFaces+    -- * Request Lenses+    , lfNextToken+    , lfMaxResults+    , lfCollectionId++    -- * Destructuring the Response+    , listFacesResponse+    , ListFacesResponse+    -- * Response Lenses+    , lfrsNextToken+    , lfrsFaces+    , lfrsResponseStatus+    ) 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:/ 'listFaces' smart constructor.+data ListFaces = ListFaces'+    { _lfNextToken    :: !(Maybe Text)+    , _lfMaxResults   :: !(Maybe Nat)+    , _lfCollectionId :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListFaces' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lfNextToken' - If the previous response was incomplete (because there is more data to retrieve), Amazon Rekognition returns a pagination token in the response. You can use this pagination token to retrieve the next set of faces.+--+-- * 'lfMaxResults' - Maximum number of faces to return.+--+-- * 'lfCollectionId' - ID of the collection from which to list the faces.+listFaces+    :: Text -- ^ 'lfCollectionId'+    -> ListFaces+listFaces pCollectionId_ =+    ListFaces'+    { _lfNextToken = Nothing+    , _lfMaxResults = Nothing+    , _lfCollectionId = pCollectionId_+    }++-- | If the previous response was incomplete (because there is more data to retrieve), Amazon Rekognition returns a pagination token in the response. You can use this pagination token to retrieve the next set of faces.+lfNextToken :: Lens' ListFaces (Maybe Text)+lfNextToken = lens _lfNextToken (\ s a -> s{_lfNextToken = a});++-- | Maximum number of faces to return.+lfMaxResults :: Lens' ListFaces (Maybe Natural)+lfMaxResults = lens _lfMaxResults (\ s a -> s{_lfMaxResults = a}) . mapping _Nat;++-- | ID of the collection from which to list the faces.+lfCollectionId :: Lens' ListFaces Text+lfCollectionId = lens _lfCollectionId (\ s a -> s{_lfCollectionId = a});++instance AWSRequest ListFaces where+        type Rs ListFaces = ListFacesResponse+        request = postJSON rekognition+        response+          = receiveJSON+              (\ s h x ->+                 ListFacesResponse' <$>+                   (x .?> "NextToken") <*> (x .?> "Faces" .!@ mempty)+                     <*> (pure (fromEnum s)))++instance Hashable ListFaces++instance NFData ListFaces++instance ToHeaders ListFaces where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("RekognitionService.ListFaces" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListFaces where+        toJSON ListFaces'{..}+          = object+              (catMaybes+                 [("NextToken" .=) <$> _lfNextToken,+                  ("MaxResults" .=) <$> _lfMaxResults,+                  Just ("CollectionId" .= _lfCollectionId)])++instance ToPath ListFaces where+        toPath = const "/"++instance ToQuery ListFaces where+        toQuery = const mempty++-- | /See:/ 'listFacesResponse' smart constructor.+data ListFacesResponse = ListFacesResponse'+    { _lfrsNextToken      :: !(Maybe Text)+    , _lfrsFaces          :: !(Maybe [Face])+    , _lfrsResponseStatus :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListFacesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lfrsNextToken' - If the response is truncated, Amazon Rekognition returns this token that you can use in the subsequent request to retrieve the next set of faces.+--+-- * 'lfrsFaces' - An array of @Face@ objects.+--+-- * 'lfrsResponseStatus' - -- | The response status code.+listFacesResponse+    :: Int -- ^ 'lfrsResponseStatus'+    -> ListFacesResponse+listFacesResponse pResponseStatus_ =+    ListFacesResponse'+    { _lfrsNextToken = Nothing+    , _lfrsFaces = Nothing+    , _lfrsResponseStatus = pResponseStatus_+    }++-- | If the response is truncated, Amazon Rekognition returns this token that you can use in the subsequent request to retrieve the next set of faces.+lfrsNextToken :: Lens' ListFacesResponse (Maybe Text)+lfrsNextToken = lens _lfrsNextToken (\ s a -> s{_lfrsNextToken = a});++-- | An array of @Face@ objects.+lfrsFaces :: Lens' ListFacesResponse [Face]+lfrsFaces = lens _lfrsFaces (\ s a -> s{_lfrsFaces = a}) . _Default . _Coerce;++-- | -- | The response status code.+lfrsResponseStatus :: Lens' ListFacesResponse Int+lfrsResponseStatus = lens _lfrsResponseStatus (\ s a -> s{_lfrsResponseStatus = a});++instance NFData ListFacesResponse
+ gen/Network/AWS/Rekognition/SearchFaces.hs view
@@ -0,0 +1,181 @@+{-# 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.SearchFaces+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- For a given input face ID, searches the specified collection for matching faces. You get a face ID when you add a face to the collection using the 'IndexFaces' operation. The operation compares the features of the input face with faces in the specified collection.+--+--+-- The operation response returns an array of faces that match, ordered by similarity score with the highest similarity first. More specifically, it is an array of metadata for each face match that is found. Along with the metadata, the response also includes a @confidence@ value for each face match, indicating the confidence that the specific face matches the input face.+--+-- For an example, see 'example3' .+--+-- This operation requires permissions to perform the @rekognition:SearchFaces@ action.+--+module Network.AWS.Rekognition.SearchFaces+    (+    -- * Creating a Request+      searchFaces+    , SearchFaces+    -- * Request Lenses+    , sfFaceMatchThreshold+    , sfMaxFaces+    , sfCollectionId+    , sfFaceId++    -- * Destructuring the Response+    , searchFacesResponse+    , SearchFacesResponse+    -- * Response Lenses+    , sfrsFaceMatches+    , sfrsSearchedFaceId+    , sfrsResponseStatus+    ) 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:/ 'searchFaces' smart constructor.+data SearchFaces = SearchFaces'+    { _sfFaceMatchThreshold :: !(Maybe Double)+    , _sfMaxFaces           :: !(Maybe Nat)+    , _sfCollectionId       :: !Text+    , _sfFaceId             :: !Text+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'SearchFaces' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sfFaceMatchThreshold' - Optional value specifying the minimum confidence in the face match to return. For example, don't return any matches where confidence in matches is less than 70%.+--+-- * 'sfMaxFaces' - Maximum number of faces to return. The API will return the maximum number of faces with the highest confidence in the match.+--+-- * 'sfCollectionId' - ID of the collection to search.+--+-- * 'sfFaceId' - ID of a face to find matches for in the collection.+searchFaces+    :: Text -- ^ 'sfCollectionId'+    -> Text -- ^ 'sfFaceId'+    -> SearchFaces+searchFaces pCollectionId_ pFaceId_ =+    SearchFaces'+    { _sfFaceMatchThreshold = Nothing+    , _sfMaxFaces = Nothing+    , _sfCollectionId = pCollectionId_+    , _sfFaceId = pFaceId_+    }++-- | Optional value specifying the minimum confidence in the face match to return. For example, don't return any matches where confidence in matches is less than 70%.+sfFaceMatchThreshold :: Lens' SearchFaces (Maybe Double)+sfFaceMatchThreshold = lens _sfFaceMatchThreshold (\ s a -> s{_sfFaceMatchThreshold = a});++-- | Maximum number of faces to return. The API will return the maximum number of faces with the highest confidence in the match.+sfMaxFaces :: Lens' SearchFaces (Maybe Natural)+sfMaxFaces = lens _sfMaxFaces (\ s a -> s{_sfMaxFaces = a}) . mapping _Nat;++-- | ID of the collection to search.+sfCollectionId :: Lens' SearchFaces Text+sfCollectionId = lens _sfCollectionId (\ s a -> s{_sfCollectionId = a});++-- | ID of a face to find matches for in the collection.+sfFaceId :: Lens' SearchFaces Text+sfFaceId = lens _sfFaceId (\ s a -> s{_sfFaceId = a});++instance AWSRequest SearchFaces where+        type Rs SearchFaces = SearchFacesResponse+        request = postJSON rekognition+        response+          = receiveJSON+              (\ s h x ->+                 SearchFacesResponse' <$>+                   (x .?> "FaceMatches" .!@ mempty) <*>+                     (x .?> "SearchedFaceId")+                     <*> (pure (fromEnum s)))++instance Hashable SearchFaces++instance NFData SearchFaces++instance ToHeaders SearchFaces where+        toHeaders+          = const+              (mconcat+                 ["X-Amz-Target" =#+                    ("RekognitionService.SearchFaces" :: ByteString),+                  "Content-Type" =#+                    ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON SearchFaces where+        toJSON SearchFaces'{..}+          = object+              (catMaybes+                 [("FaceMatchThreshold" .=) <$> _sfFaceMatchThreshold,+                  ("MaxFaces" .=) <$> _sfMaxFaces,+                  Just ("CollectionId" .= _sfCollectionId),+                  Just ("FaceId" .= _sfFaceId)])++instance ToPath SearchFaces where+        toPath = const "/"++instance ToQuery SearchFaces where+        toQuery = const mempty++-- | /See:/ 'searchFacesResponse' smart constructor.+data SearchFacesResponse = SearchFacesResponse'+    { _sfrsFaceMatches    :: !(Maybe [FaceMatch])+    , _sfrsSearchedFaceId :: !(Maybe Text)+    , _sfrsResponseStatus :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'SearchFacesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sfrsFaceMatches' - An array of faces that matched the input face, along with the confidence in the match.+--+-- * 'sfrsSearchedFaceId' - ID of the face that was searched for matches in a collection.+--+-- * 'sfrsResponseStatus' - -- | The response status code.+searchFacesResponse+    :: Int -- ^ 'sfrsResponseStatus'+    -> SearchFacesResponse+searchFacesResponse pResponseStatus_ =+    SearchFacesResponse'+    { _sfrsFaceMatches = Nothing+    , _sfrsSearchedFaceId = Nothing+    , _sfrsResponseStatus = pResponseStatus_+    }++-- | An array of faces that matched the input face, along with the confidence in the match.+sfrsFaceMatches :: Lens' SearchFacesResponse [FaceMatch]+sfrsFaceMatches = lens _sfrsFaceMatches (\ s a -> s{_sfrsFaceMatches = a}) . _Default . _Coerce;++-- | ID of the face that was searched for matches in a collection.+sfrsSearchedFaceId :: Lens' SearchFacesResponse (Maybe Text)+sfrsSearchedFaceId = lens _sfrsSearchedFaceId (\ s a -> s{_sfrsSearchedFaceId = a});++-- | -- | The response status code.+sfrsResponseStatus :: Lens' SearchFacesResponse Int+sfrsResponseStatus = lens _sfrsResponseStatus (\ s a -> s{_sfrsResponseStatus = a});++instance NFData SearchFacesResponse
+ gen/Network/AWS/Rekognition/SearchFacesByImage.hs view
@@ -0,0 +1,194 @@+{-# 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.SearchFacesByImage+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- For a given input image, first detects the largest face in the image, and then searches the specified collection for matching faces. The operation compares the features of the input face with faces in the specified collection.+--+--+-- The response returns an array of faces that match, ordered by similarity score with the highest similarity first. More specifically, it is an array of metadata for each face match found. Along with the metadata, the response also includes a @similarity@ indicating how similar the face is to the input face. In the response, the API also returns the bounding box (and a confidence level that the bounding box contains a face) of the face that Rekognition used for the input image.+--+-- For an example, see 'example3' .+--+-- This operation requires permissions to perform the @rekognition:SearchFacesByImage@ action.+--+module Network.AWS.Rekognition.SearchFacesByImage+    (+    -- * Creating a Request+      searchFacesByImage+    , SearchFacesByImage+    -- * Request Lenses+    , sfbiFaceMatchThreshold+    , sfbiMaxFaces+    , sfbiCollectionId+    , sfbiImage++    -- * Destructuring the Response+    , searchFacesByImageResponse+    , SearchFacesByImageResponse+    -- * Response Lenses+    , sfbirsFaceMatches+    , 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++-- | /See:/ 'searchFacesByImage' smart constructor.+data SearchFacesByImage = SearchFacesByImage'+    { _sfbiFaceMatchThreshold :: !(Maybe Double)+    , _sfbiMaxFaces           :: !(Maybe Nat)+    , _sfbiCollectionId       :: !Text+    , _sfbiImage              :: !Image+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'SearchFacesByImage' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sfbiFaceMatchThreshold' - (Optional) Specifies the minimum confidence in the face match to return. For example, don't return any matches where confidence in matches is less than 70%.+--+-- * 'sfbiMaxFaces' - Maximum number of faces to return. The operation returns the maximum number of faces with the highest confidence in the match.+--+-- * 'sfbiCollectionId' - ID of the collection to search.+--+-- * 'sfbiImage' - Undocumented member.+searchFacesByImage+    :: Text -- ^ 'sfbiCollectionId'+    -> Image -- ^ 'sfbiImage'+    -> SearchFacesByImage+searchFacesByImage pCollectionId_ pImage_ =+    SearchFacesByImage'+    { _sfbiFaceMatchThreshold = Nothing+    , _sfbiMaxFaces = Nothing+    , _sfbiCollectionId = pCollectionId_+    , _sfbiImage = pImage_+    }++-- | (Optional) Specifies the minimum confidence in the face match to return. For example, don't return any matches where confidence in matches is less than 70%.+sfbiFaceMatchThreshold :: Lens' SearchFacesByImage (Maybe Double)+sfbiFaceMatchThreshold = lens _sfbiFaceMatchThreshold (\ s a -> s{_sfbiFaceMatchThreshold = a});++-- | Maximum number of faces to return. The operation returns the maximum number of faces with the highest confidence in the match.+sfbiMaxFaces :: Lens' SearchFacesByImage (Maybe Natural)+sfbiMaxFaces = lens _sfbiMaxFaces (\ s a -> s{_sfbiMaxFaces = a}) . mapping _Nat;++-- | ID of the collection to search.+sfbiCollectionId :: Lens' SearchFacesByImage Text+sfbiCollectionId = lens _sfbiCollectionId (\ s a -> s{_sfbiCollectionId = a});++-- | Undocumented member.+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 .?> "SearchedFaceBoundingBox")+                     <*> (x .?> "SearchedFaceConfidence")+                     <*> (pure (fromEnum s)))++instance Hashable SearchFacesByImage++instance NFData SearchFacesByImage++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++-- | /See:/ 'searchFacesByImageResponse' smart constructor.+data SearchFacesByImageResponse = SearchFacesByImageResponse'+    { _sfbirsFaceMatches             :: !(Maybe [FaceMatch])+    , _sfbirsSearchedFaceBoundingBox :: !(Maybe BoundingBox)+    , _sfbirsSearchedFaceConfidence  :: !(Maybe Double)+    , _sfbirsResponseStatus          :: !Int+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'SearchFacesByImageResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sfbirsFaceMatches' - An array of faces that match the input face, along with the confidence in the match.+--+-- * 'sfbirsSearchedFaceBoundingBox' - The bounding box around the face in the input image that Rekognition used for the search.+--+-- * 'sfbirsSearchedFaceConfidence' - The level of confidence that the @searchedFaceBoundingBox@ , contains a face.+--+-- * 'sfbirsResponseStatus' - -- | The response status code.+searchFacesByImageResponse+    :: Int -- ^ 'sfbirsResponseStatus'+    -> SearchFacesByImageResponse+searchFacesByImageResponse pResponseStatus_ =+    SearchFacesByImageResponse'+    { _sfbirsFaceMatches = Nothing+    , _sfbirsSearchedFaceBoundingBox = Nothing+    , _sfbirsSearchedFaceConfidence = Nothing+    , _sfbirsResponseStatus = pResponseStatus_+    }++-- | An array of faces that match the input face, along with the confidence in the match.+sfbirsFaceMatches :: Lens' SearchFacesByImageResponse [FaceMatch]+sfbirsFaceMatches = lens _sfbirsFaceMatches (\ s a -> s{_sfbirsFaceMatches = a}) . _Default . _Coerce;++-- | The bounding box around the face in the input image that Rekognition used for the search.+sfbirsSearchedFaceBoundingBox :: Lens' SearchFacesByImageResponse (Maybe BoundingBox)+sfbirsSearchedFaceBoundingBox = lens _sfbirsSearchedFaceBoundingBox (\ s a -> s{_sfbirsSearchedFaceBoundingBox = a});++-- | The level of confidence that the @searchedFaceBoundingBox@ , contains a face.+sfbirsSearchedFaceConfidence :: Lens' SearchFacesByImageResponse (Maybe Double)+sfbirsSearchedFaceConfidence = lens _sfbirsSearchedFaceConfidence (\ s a -> s{_sfbirsSearchedFaceConfidence = a});++-- | -- | The response status code.+sfbirsResponseStatus :: Lens' SearchFacesByImageResponse Int+sfbirsResponseStatus = lens _sfbirsResponseStatus (\ s a -> s{_sfbirsResponseStatus = a});++instance NFData SearchFacesByImageResponse
+ gen/Network/AWS/Rekognition/Types.hs view
@@ -0,0 +1,315 @@+{-# LANGUAGE OverloadedStrings #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Network.AWS.Rekognition.Types+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.AWS.Rekognition.Types+    (+    -- * Service Configuration+      rekognition++    -- * Errors+    , _AccessDeniedException+    , _InvalidParameterException+    , _InvalidImageFormatException+    , _ResourceAlreadyExistsException+    , _InvalidS3ObjectException+    , _ProvisionedThroughputExceededException+    , _ImageTooLargeException+    , _ThrottlingException+    , _InternalServerError+    , _ResourceNotFoundException+    , _InvalidPaginationTokenException++    -- * Attribute+    , Attribute (..)++    -- * EmotionName+    , EmotionName (..)++    -- * GenderType+    , GenderType (..)++    -- * LandmarkType+    , LandmarkType (..)++    -- * OrientationCorrection+    , OrientationCorrection (..)++    -- * Beard+    , Beard+    , beard+    , bValue+    , bConfidence++    -- * BoundingBox+    , BoundingBox+    , boundingBox+    , bbHeight+    , bbLeft+    , bbWidth+    , bbTop++    -- * CompareFacesMatch+    , CompareFacesMatch+    , compareFacesMatch+    , cfmSimilarity+    , cfmFace++    -- * ComparedFace+    , ComparedFace+    , comparedFace+    , cfBoundingBox+    , cfConfidence++    -- * ComparedSourceImageFace+    , ComparedSourceImageFace+    , comparedSourceImageFace+    , csifBoundingBox+    , csifConfidence++    -- * Emotion+    , Emotion+    , emotion+    , eConfidence+    , eType++    -- * EyeOpen+    , EyeOpen+    , eyeOpen+    , eoValue+    , eoConfidence++    -- * Eyeglasses+    , Eyeglasses+    , eyeglasses+    , eyeValue+    , eyeConfidence++    -- * Face+    , Face+    , face+    , fFaceId+    , fBoundingBox+    , fExternalImageId+    , fConfidence+    , fImageId++    -- * FaceDetail+    , FaceDetail+    , faceDetail+    , fdSunglasses+    , fdMouthOpen+    , fdBoundingBox+    , fdEmotions+    , fdEyesOpen+    , fdPose+    , fdConfidence+    , fdGender+    , fdQuality+    , fdEyeglasses+    , fdBeard+    , fdMustache+    , fdSmile+    , fdLandmarks++    -- * FaceMatch+    , FaceMatch+    , faceMatch+    , fmSimilarity+    , fmFace++    -- * FaceRecord+    , FaceRecord+    , faceRecord+    , frFaceDetail+    , frFace++    -- * Gender+    , Gender+    , gender+    , gValue+    , gConfidence++    -- * Image+    , Image+    , image+    , iS3Object+    , iBytes++    -- * ImageQuality+    , ImageQuality+    , imageQuality+    , iqSharpness+    , iqBrightness++    -- * Label+    , Label+    , label+    , lConfidence+    , lName++    -- * Landmark+    , Landmark+    , landmark+    , lType+    , lX+    , lY++    -- * MouthOpen+    , MouthOpen+    , mouthOpen+    , moValue+    , moConfidence++    -- * Mustache+    , Mustache+    , mustache+    , mValue+    , mConfidence++    -- * Pose+    , Pose+    , pose+    , pYaw+    , pRoll+    , pPitch++    -- * S3Object+    , S3Object+    , s3Object+    , soBucket+    , soName+    , soVersion++    -- * Smile+    , Smile+    , smile+    , smiValue+    , smiConfidence++    -- * Sunglasses+    , Sunglasses+    , sunglasses+    , sValue+    , sConfidence+    ) where++import           Network.AWS.Lens+import           Network.AWS.Prelude+import           Network.AWS.Rekognition.Types.Product+import           Network.AWS.Rekognition.Types.Sum+import           Network.AWS.Sign.V4++-- | API version @2016-06-27@ of the Amazon Rekognition SDK configuration.+rekognition :: Service+rekognition =+    Service+    { _svcAbbrev = "Rekognition"+    , _svcSigner = v4+    , _svcPrefix = "rekognition"+    , _svcVersion = "2016-06-27"+    , _svcEndpoint = defaultEndpoint rekognition+    , _svcTimeout = Just 70+    , _svcCheck = statusSuccess+    , _svcError = parseJSONError "Rekognition"+    , _svcRetry = retry+    }+  where+    retry =+        Exponential+        { _retryBase = 5.0e-2+        , _retryGrowth = 2+        , _retryAttempts = 5+        , _retryCheck = check+        }+    check e+      | has (hasStatus 429) e = Just "too_many_requests"+      | has (hasCode "ThrottlingException" . hasStatus 400) e =+          Just "throttling_exception"+      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"+      | has (hasStatus 504) e = Just "gateway_timeout"+      | has (hasStatus 502) e = Just "bad_gateway"+      | has (hasStatus 503) e = Just "service_unavailable"+      | has (hasStatus 500) e = Just "general_server_error"+      | has (hasStatus 509) e = Just "limit_exceeded"+      | otherwise = Nothing++-- | You are not authorized to perform the action.+--+--+_AccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError+_AccessDeniedException = _ServiceError . hasCode "AccessDeniedException"++-- | Input parameter violated a constraint. Validate your parameter before calling the API again.+--+--+_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError+_InvalidParameterException =+    _ServiceError . hasCode "InvalidParameterException"++-- | The provided image format is not supported.+--+--+_InvalidImageFormatException :: AsError a => Getting (First ServiceError) a ServiceError+_InvalidImageFormatException =+    _ServiceError . hasCode "InvalidImageFormatException"++-- | The collection with specific ID already exist.+--+--+_ResourceAlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError+_ResourceAlreadyExistsException =+    _ServiceError . hasCode "ResourceAlreadyExistsException"++-- | Amazon Rekognition is unable to access the S3 object specified in the request.+--+--+_InvalidS3ObjectException :: AsError a => Getting (First ServiceError) a ServiceError+_InvalidS3ObjectException = _ServiceError . hasCode "InvalidS3ObjectException"++-- | The number of requests exceeded your throughput limit. If you want to increase this limit, contact Amazon Rekognition.+--+--+_ProvisionedThroughputExceededException :: AsError a => Getting (First ServiceError) a ServiceError+_ProvisionedThroughputExceededException =+    _ServiceError . hasCode "ProvisionedThroughputExceededException"++-- | The input image size exceeds the allowed limit. For more information, see 'limits' .+--+--+_ImageTooLargeException :: AsError a => Getting (First ServiceError) a ServiceError+_ImageTooLargeException = _ServiceError . hasCode "ImageTooLargeException"++-- | Amazon Rekognition is temporarily unable to process the request. Try your call again.+--+--+_ThrottlingException :: AsError a => Getting (First ServiceError) a ServiceError+_ThrottlingException = _ServiceError . hasCode "ThrottlingException"++-- | Amazon Rekognition experienced a service issue. Try your call again.+--+--+_InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError+_InternalServerError = _ServiceError . hasCode "InternalServerError"++-- | Collection specified in the request is not found.+--+--+_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError+_ResourceNotFoundException =+    _ServiceError . hasCode "ResourceNotFoundException"++-- | Pagination token in the request is not valid.+--+--+_InvalidPaginationTokenException :: AsError a => Getting (First ServiceError) a ServiceError+_InvalidPaginationTokenException =+    _ServiceError . hasCode "InvalidPaginationTokenException"
+ gen/Network/AWS/Rekognition/Types/Product.hs view
@@ -0,0 +1,1211 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Network.AWS.Rekognition.Types.Product+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.AWS.Rekognition.Types.Product where++import           Network.AWS.Lens+import           Network.AWS.Prelude+import           Network.AWS.Rekognition.Types.Sum++-- | Indicates whether or not the face has a beard, and the confidence level in the determination.+--+--+--+-- /See:/ 'beard' smart constructor.+data Beard = Beard'+    { _bValue      :: !(Maybe Bool)+    , _bConfidence :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Beard' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bValue' - Boolean value that indicates whether the face has beard or not.+--+-- * 'bConfidence' - Level of confidence in the determination.+beard+    :: Beard+beard =+    Beard'+    { _bValue = Nothing+    , _bConfidence = Nothing+    }++-- | Boolean value that indicates whether the face has beard or not.+bValue :: Lens' Beard (Maybe Bool)+bValue = lens _bValue (\ s a -> s{_bValue = a});++-- | Level of confidence in the determination.+bConfidence :: Lens' Beard (Maybe Double)+bConfidence = lens _bConfidence (\ s a -> s{_bConfidence = a});++instance FromJSON Beard where+        parseJSON+          = withObject "Beard"+              (\ x ->+                 Beard' <$> (x .:? "Value") <*> (x .:? "Confidence"))++instance Hashable Beard++instance NFData Beard++-- | Identifies the bounding box around the object or face. The @left@ (x-coordinate) and @top@ (y-coordinate) are coordinates representing the top and left sides of the bounding box. Note that the upper-left corner of the image is the origin (0,0).+--+--+-- The @top@ and @left@ values returned are ratios of the overall image size. For example, if the input image is 700x200 pixels, and the top-left coordinate of the bounding box is 350x50 pixels, the API returns a @left@ value of 0.5 (350/700) and a @top@ value of 0.25 (50/200).+--+-- The @width@ and @height@ values represent the dimensions of the bounding box as a ratio of the overall image dimension. For example, if the input image is 700x200 pixels, and the bounding box width is 70 pixels, the width returned is 0.1.+--+--+-- /See:/ 'boundingBox' smart constructor.+data BoundingBox = BoundingBox'+    { _bbHeight :: !(Maybe Double)+    , _bbLeft   :: !(Maybe Double)+    , _bbWidth  :: !(Maybe Double)+    , _bbTop    :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'BoundingBox' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bbHeight' - Height of the bounding box as a ratio of the overall image height.+--+-- * 'bbLeft' - Left coordinate of the bounding box as a ratio of overall image width.+--+-- * 'bbWidth' - Width of the bounding box as a ratio of the overall image width.+--+-- * 'bbTop' - Top coordinate of the bounding box as a ratio of overall image height.+boundingBox+    :: BoundingBox+boundingBox =+    BoundingBox'+    { _bbHeight = Nothing+    , _bbLeft = Nothing+    , _bbWidth = Nothing+    , _bbTop = Nothing+    }++-- | Height of the bounding box as a ratio of the overall image height.+bbHeight :: Lens' BoundingBox (Maybe Double)+bbHeight = lens _bbHeight (\ s a -> s{_bbHeight = a});++-- | Left coordinate of the bounding box as a ratio of overall image width.+bbLeft :: Lens' BoundingBox (Maybe Double)+bbLeft = lens _bbLeft (\ s a -> s{_bbLeft = a});++-- | Width of the bounding box as a ratio of the overall image width.+bbWidth :: Lens' BoundingBox (Maybe Double)+bbWidth = lens _bbWidth (\ s a -> s{_bbWidth = a});++-- | Top coordinate of the bounding box as a ratio of overall image height.+bbTop :: Lens' BoundingBox (Maybe Double)+bbTop = lens _bbTop (\ s a -> s{_bbTop = a});++instance FromJSON BoundingBox where+        parseJSON+          = withObject "BoundingBox"+              (\ x ->+                 BoundingBox' <$>+                   (x .:? "Height") <*> (x .:? "Left") <*>+                     (x .:? "Width")+                     <*> (x .:? "Top"))++instance Hashable BoundingBox++instance NFData BoundingBox++-- | Provide the bounding box, confidence that the bounding box actually contains a face, and the similarity between the face in the bounding box and the face in the source image.+--+--+--+-- /See:/ 'compareFacesMatch' smart constructor.+data CompareFacesMatch = CompareFacesMatch'+    { _cfmSimilarity :: !(Maybe Double)+    , _cfmFace       :: !(Maybe ComparedFace)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'CompareFacesMatch' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cfmSimilarity' - Level of confidence that the faces match.+--+-- * 'cfmFace' - Provides face metadata (bounding box and confidence that the bounding box actually contains a face).+compareFacesMatch+    :: CompareFacesMatch+compareFacesMatch =+    CompareFacesMatch'+    { _cfmSimilarity = Nothing+    , _cfmFace = Nothing+    }++-- | Level of confidence that the faces match.+cfmSimilarity :: Lens' CompareFacesMatch (Maybe Double)+cfmSimilarity = lens _cfmSimilarity (\ s a -> s{_cfmSimilarity = a});++-- | Provides face metadata (bounding box and confidence that the bounding box actually contains a face).+cfmFace :: Lens' CompareFacesMatch (Maybe ComparedFace)+cfmFace = lens _cfmFace (\ s a -> s{_cfmFace = a});++instance FromJSON CompareFacesMatch where+        parseJSON+          = withObject "CompareFacesMatch"+              (\ x ->+                 CompareFacesMatch' <$>+                   (x .:? "Similarity") <*> (x .:? "Face"))++instance Hashable CompareFacesMatch++instance NFData CompareFacesMatch++-- | Provides face metadata (bounding box and confidence that the bounding box actually contains a face).+--+--+--+-- /See:/ 'comparedFace' smart constructor.+data ComparedFace = ComparedFace'+    { _cfBoundingBox :: !(Maybe BoundingBox)+    , _cfConfidence  :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ComparedFace' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cfBoundingBox' - Undocumented member.+--+-- * 'cfConfidence' - Level of confidence that what the bounding box contains is a face.+comparedFace+    :: ComparedFace+comparedFace =+    ComparedFace'+    { _cfBoundingBox = Nothing+    , _cfConfidence = Nothing+    }++-- | Undocumented member.+cfBoundingBox :: Lens' ComparedFace (Maybe BoundingBox)+cfBoundingBox = lens _cfBoundingBox (\ s a -> s{_cfBoundingBox = a});++-- | Level of confidence that what the bounding box contains is a face.+cfConfidence :: Lens' ComparedFace (Maybe Double)+cfConfidence = lens _cfConfidence (\ s a -> s{_cfConfidence = a});++instance FromJSON ComparedFace where+        parseJSON+          = withObject "ComparedFace"+              (\ x ->+                 ComparedFace' <$>+                   (x .:? "BoundingBox") <*> (x .:? "Confidence"))++instance Hashable ComparedFace++instance NFData ComparedFace++-- | Type that describes the face Amazon Rekognition chose to compare with the faces in the target. This contains a bounding box for the selected face and confidence level that the bounding box contains a face. Note that Amazon Rekognition selects the largest face in the source image for this comparison.+--+--+--+-- /See:/ 'comparedSourceImageFace' smart constructor.+data ComparedSourceImageFace = ComparedSourceImageFace'+    { _csifBoundingBox :: !(Maybe BoundingBox)+    , _csifConfidence  :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ComparedSourceImageFace' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csifBoundingBox' - Undocumented member.+--+-- * 'csifConfidence' - Confidence that the selected bounding box contains a face.+comparedSourceImageFace+    :: ComparedSourceImageFace+comparedSourceImageFace =+    ComparedSourceImageFace'+    { _csifBoundingBox = Nothing+    , _csifConfidence = Nothing+    }++-- | Undocumented member.+csifBoundingBox :: Lens' ComparedSourceImageFace (Maybe BoundingBox)+csifBoundingBox = lens _csifBoundingBox (\ s a -> s{_csifBoundingBox = a});++-- | Confidence that the selected bounding box contains a face.+csifConfidence :: Lens' ComparedSourceImageFace (Maybe Double)+csifConfidence = lens _csifConfidence (\ s a -> s{_csifConfidence = a});++instance FromJSON ComparedSourceImageFace where+        parseJSON+          = withObject "ComparedSourceImageFace"+              (\ x ->+                 ComparedSourceImageFace' <$>+                   (x .:? "BoundingBox") <*> (x .:? "Confidence"))++instance Hashable ComparedSourceImageFace++instance NFData ComparedSourceImageFace++-- | The emotions detected on the face, and the confidence level in the determination. For example, HAPPY, SAD, and ANGRY.+--+--+--+-- /See:/ 'emotion' smart constructor.+data Emotion = Emotion'+    { _eConfidence :: !(Maybe Double)+    , _eType       :: !(Maybe EmotionName)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Emotion' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eConfidence' - Level of confidence in the determination.+--+-- * 'eType' - Type of emotion detected.+emotion+    :: Emotion+emotion =+    Emotion'+    { _eConfidence = Nothing+    , _eType = Nothing+    }++-- | Level of confidence in the determination.+eConfidence :: Lens' Emotion (Maybe Double)+eConfidence = lens _eConfidence (\ s a -> s{_eConfidence = a});++-- | Type of emotion detected.+eType :: Lens' Emotion (Maybe EmotionName)+eType = lens _eType (\ s a -> s{_eType = a});++instance FromJSON Emotion where+        parseJSON+          = withObject "Emotion"+              (\ x ->+                 Emotion' <$> (x .:? "Confidence") <*> (x .:? "Type"))++instance Hashable Emotion++instance NFData Emotion++-- | Indicates whether or not the eyes on the face are open, and the confidence level in the determination.+--+--+--+-- /See:/ 'eyeOpen' smart constructor.+data EyeOpen = EyeOpen'+    { _eoValue      :: !(Maybe Bool)+    , _eoConfidence :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'EyeOpen' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eoValue' - Boolean value that indicates whether the eyes on the face are open.+--+-- * 'eoConfidence' - Level of confidence in the determination.+eyeOpen+    :: EyeOpen+eyeOpen =+    EyeOpen'+    { _eoValue = Nothing+    , _eoConfidence = Nothing+    }++-- | Boolean value that indicates whether the eyes on the face are open.+eoValue :: Lens' EyeOpen (Maybe Bool)+eoValue = lens _eoValue (\ s a -> s{_eoValue = a});++-- | Level of confidence in the determination.+eoConfidence :: Lens' EyeOpen (Maybe Double)+eoConfidence = lens _eoConfidence (\ s a -> s{_eoConfidence = a});++instance FromJSON EyeOpen where+        parseJSON+          = withObject "EyeOpen"+              (\ x ->+                 EyeOpen' <$>+                   (x .:? "Value") <*> (x .:? "Confidence"))++instance Hashable EyeOpen++instance NFData EyeOpen++-- | Indicates whether or not the face is wearing eye glasses, and the confidence level in the determination.+--+--+--+-- /See:/ 'eyeglasses' smart constructor.+data Eyeglasses = Eyeglasses'+    { _eyeValue      :: !(Maybe Bool)+    , _eyeConfidence :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Eyeglasses' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eyeValue' - Boolean value that indicates whether the face is wearing eye glasses or not.+--+-- * 'eyeConfidence' - Level of confidence in the determination.+eyeglasses+    :: Eyeglasses+eyeglasses =+    Eyeglasses'+    { _eyeValue = Nothing+    , _eyeConfidence = Nothing+    }++-- | Boolean value that indicates whether the face is wearing eye glasses or not.+eyeValue :: Lens' Eyeglasses (Maybe Bool)+eyeValue = lens _eyeValue (\ s a -> s{_eyeValue = a});++-- | Level of confidence in the determination.+eyeConfidence :: Lens' Eyeglasses (Maybe Double)+eyeConfidence = lens _eyeConfidence (\ s a -> s{_eyeConfidence = a});++instance FromJSON Eyeglasses where+        parseJSON+          = withObject "Eyeglasses"+              (\ x ->+                 Eyeglasses' <$>+                   (x .:? "Value") <*> (x .:? "Confidence"))++instance Hashable Eyeglasses++instance NFData Eyeglasses++-- | Describes the face properties such as the bounding box, face ID, image ID of the source image, and external image ID that you assigned.+--+--+--+-- /See:/ 'face' smart constructor.+data Face = Face'+    { _fFaceId          :: !(Maybe Text)+    , _fBoundingBox     :: !(Maybe BoundingBox)+    , _fExternalImageId :: !(Maybe Text)+    , _fConfidence      :: !(Maybe Double)+    , _fImageId         :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Face' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fFaceId' - Unique identifier that Amazon Rekognition assigns to the face.+--+-- * 'fBoundingBox' - Undocumented member.+--+-- * 'fExternalImageId' - Identifier that you assign to all the faces in the input image.+--+-- * 'fConfidence' - Confidence level that the bounding box contains a face (and not a different object such as a tree).+--+-- * 'fImageId' - Unique identifier that Amazon Rekognition assigns to the source image.+face+    :: Face+face =+    Face'+    { _fFaceId = Nothing+    , _fBoundingBox = Nothing+    , _fExternalImageId = Nothing+    , _fConfidence = Nothing+    , _fImageId = Nothing+    }++-- | Unique identifier that Amazon Rekognition assigns to the face.+fFaceId :: Lens' Face (Maybe Text)+fFaceId = lens _fFaceId (\ s a -> s{_fFaceId = a});++-- | Undocumented member.+fBoundingBox :: Lens' Face (Maybe BoundingBox)+fBoundingBox = lens _fBoundingBox (\ s a -> s{_fBoundingBox = a});++-- | Identifier that you assign to all the faces in the input image.+fExternalImageId :: Lens' Face (Maybe Text)+fExternalImageId = lens _fExternalImageId (\ s a -> s{_fExternalImageId = a});++-- | Confidence level that the bounding box contains a face (and not a different object such as a tree).+fConfidence :: Lens' Face (Maybe Double)+fConfidence = lens _fConfidence (\ s a -> s{_fConfidence = a});++-- | Unique identifier that Amazon Rekognition assigns to the source image.+fImageId :: Lens' Face (Maybe Text)+fImageId = lens _fImageId (\ s a -> s{_fImageId = a});++instance FromJSON Face where+        parseJSON+          = withObject "Face"+              (\ x ->+                 Face' <$>+                   (x .:? "FaceId") <*> (x .:? "BoundingBox") <*>+                     (x .:? "ExternalImageId")+                     <*> (x .:? "Confidence")+                     <*> (x .:? "ImageId"))++instance Hashable Face++instance NFData Face++-- | Structure containing attributes of the face that the algorithm detected.+--+--+--+-- /See:/ 'faceDetail' smart constructor.+data FaceDetail = FaceDetail'+    { _fdSunglasses  :: !(Maybe Sunglasses)+    , _fdMouthOpen   :: !(Maybe MouthOpen)+    , _fdBoundingBox :: !(Maybe BoundingBox)+    , _fdEmotions    :: !(Maybe [Emotion])+    , _fdEyesOpen    :: !(Maybe EyeOpen)+    , _fdPose        :: !(Maybe Pose)+    , _fdConfidence  :: !(Maybe Double)+    , _fdGender      :: !(Maybe Gender)+    , _fdQuality     :: !(Maybe ImageQuality)+    , _fdEyeglasses  :: !(Maybe Eyeglasses)+    , _fdBeard       :: !(Maybe Beard)+    , _fdMustache    :: !(Maybe Mustache)+    , _fdSmile       :: !(Maybe Smile)+    , _fdLandmarks   :: !(Maybe [Landmark])+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'FaceDetail' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fdSunglasses' - Indicates whether or not the face is wearing sunglasses, and the confidence level in the determination.+--+-- * 'fdMouthOpen' - Indicates whether or not the mouth on the face is open, and the confidence level in the determination.+--+-- * 'fdBoundingBox' - Bounding box of the face.+--+-- * 'fdEmotions' - The emotions detected on the face, and the confidence level in the determination. For example, HAPPY, SAD, and ANGRY.+--+-- * 'fdEyesOpen' - Indicates whether or not the eyes on the face are open, and the confidence level in the determination.+--+-- * 'fdPose' - Indicates the pose of the face as determined by pitch, roll, and the yaw.+--+-- * 'fdConfidence' - Confidence level that the bounding box contains a face (and not a different object such as a tree).+--+-- * 'fdGender' - Gender of the face and the confidence level in the determination.+--+-- * 'fdQuality' - Identifies image brightness and sharpness.+--+-- * 'fdEyeglasses' - Indicates whether or not the face is wearing eye glasses, and the confidence level in the determination.+--+-- * 'fdBeard' - Indicates whether or not the face has a beard, and the confidence level in the determination.+--+-- * 'fdMustache' - Indicates whether or not the face has a mustache, and the confidence level in the determination.+--+-- * 'fdSmile' - Indicates whether or not the face is smiling, and the confidence level in the determination.+--+-- * 'fdLandmarks' - Indicates the location of the landmark on the face.+faceDetail+    :: FaceDetail+faceDetail =+    FaceDetail'+    { _fdSunglasses = Nothing+    , _fdMouthOpen = Nothing+    , _fdBoundingBox = Nothing+    , _fdEmotions = Nothing+    , _fdEyesOpen = Nothing+    , _fdPose = Nothing+    , _fdConfidence = Nothing+    , _fdGender = Nothing+    , _fdQuality = Nothing+    , _fdEyeglasses = Nothing+    , _fdBeard = Nothing+    , _fdMustache = Nothing+    , _fdSmile = Nothing+    , _fdLandmarks = Nothing+    }++-- | Indicates whether or not the face is wearing sunglasses, and the confidence level in the determination.+fdSunglasses :: Lens' FaceDetail (Maybe Sunglasses)+fdSunglasses = lens _fdSunglasses (\ s a -> s{_fdSunglasses = a});++-- | Indicates whether or not the mouth on the face is open, and the confidence level in the determination.+fdMouthOpen :: Lens' FaceDetail (Maybe MouthOpen)+fdMouthOpen = lens _fdMouthOpen (\ s a -> s{_fdMouthOpen = a});++-- | Bounding box of the face.+fdBoundingBox :: Lens' FaceDetail (Maybe BoundingBox)+fdBoundingBox = lens _fdBoundingBox (\ s a -> s{_fdBoundingBox = a});++-- | The emotions detected on the face, and the confidence level in the determination. For example, HAPPY, SAD, and ANGRY.+fdEmotions :: Lens' FaceDetail [Emotion]+fdEmotions = lens _fdEmotions (\ s a -> s{_fdEmotions = a}) . _Default . _Coerce;++-- | Indicates whether or not the eyes on the face are open, and the confidence level in the determination.+fdEyesOpen :: Lens' FaceDetail (Maybe EyeOpen)+fdEyesOpen = lens _fdEyesOpen (\ s a -> s{_fdEyesOpen = a});++-- | Indicates the pose of the face as determined by pitch, roll, and the yaw.+fdPose :: Lens' FaceDetail (Maybe Pose)+fdPose = lens _fdPose (\ s a -> s{_fdPose = a});++-- | Confidence level that the bounding box contains a face (and not a different object such as a tree).+fdConfidence :: Lens' FaceDetail (Maybe Double)+fdConfidence = lens _fdConfidence (\ s a -> s{_fdConfidence = a});++-- | Gender of the face and the confidence level in the determination.+fdGender :: Lens' FaceDetail (Maybe Gender)+fdGender = lens _fdGender (\ s a -> s{_fdGender = a});++-- | Identifies image brightness and sharpness.+fdQuality :: Lens' FaceDetail (Maybe ImageQuality)+fdQuality = lens _fdQuality (\ s a -> s{_fdQuality = a});++-- | Indicates whether or not the face is wearing eye glasses, and the confidence level in the determination.+fdEyeglasses :: Lens' FaceDetail (Maybe Eyeglasses)+fdEyeglasses = lens _fdEyeglasses (\ s a -> s{_fdEyeglasses = a});++-- | Indicates whether or not the face has a beard, and the confidence level in the determination.+fdBeard :: Lens' FaceDetail (Maybe Beard)+fdBeard = lens _fdBeard (\ s a -> s{_fdBeard = a});++-- | Indicates whether or not the face has a mustache, and the confidence level in the determination.+fdMustache :: Lens' FaceDetail (Maybe Mustache)+fdMustache = lens _fdMustache (\ s a -> s{_fdMustache = a});++-- | Indicates whether or not the face is smiling, and the confidence level in the determination.+fdSmile :: Lens' FaceDetail (Maybe Smile)+fdSmile = lens _fdSmile (\ s a -> s{_fdSmile = a});++-- | Indicates the location of the landmark on the face.+fdLandmarks :: Lens' FaceDetail [Landmark]+fdLandmarks = lens _fdLandmarks (\ s a -> s{_fdLandmarks = a}) . _Default . _Coerce;++instance FromJSON FaceDetail where+        parseJSON+          = withObject "FaceDetail"+              (\ x ->+                 FaceDetail' <$>+                   (x .:? "Sunglasses") <*> (x .:? "MouthOpen") <*>+                     (x .:? "BoundingBox")+                     <*> (x .:? "Emotions" .!= mempty)+                     <*> (x .:? "EyesOpen")+                     <*> (x .:? "Pose")+                     <*> (x .:? "Confidence")+                     <*> (x .:? "Gender")+                     <*> (x .:? "Quality")+                     <*> (x .:? "Eyeglasses")+                     <*> (x .:? "Beard")+                     <*> (x .:? "Mustache")+                     <*> (x .:? "Smile")+                     <*> (x .:? "Landmarks" .!= mempty))++instance Hashable FaceDetail++instance NFData FaceDetail++-- | Provides face metadata. In addition, it also provides the confidence in the match of this face with the input face.+--+--+--+-- /See:/ 'faceMatch' smart constructor.+data FaceMatch = FaceMatch'+    { _fmSimilarity :: !(Maybe Double)+    , _fmFace       :: !(Maybe Face)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'FaceMatch' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fmSimilarity' - Confidence in the match of this face with the input face.+--+-- * 'fmFace' - Undocumented member.+faceMatch+    :: FaceMatch+faceMatch =+    FaceMatch'+    { _fmSimilarity = Nothing+    , _fmFace = Nothing+    }++-- | Confidence in the match of this face with the input face.+fmSimilarity :: Lens' FaceMatch (Maybe Double)+fmSimilarity = lens _fmSimilarity (\ s a -> s{_fmSimilarity = a});++-- | Undocumented member.+fmFace :: Lens' FaceMatch (Maybe Face)+fmFace = lens _fmFace (\ s a -> s{_fmFace = a});++instance FromJSON FaceMatch where+        parseJSON+          = withObject "FaceMatch"+              (\ x ->+                 FaceMatch' <$>+                   (x .:? "Similarity") <*> (x .:? "Face"))++instance Hashable FaceMatch++instance NFData FaceMatch++-- | Object containing both the face metadata (stored in the back-end database) and facial attributes that are detected but aren't stored in the database.+--+--+--+-- /See:/ 'faceRecord' smart constructor.+data FaceRecord = FaceRecord'+    { _frFaceDetail :: !(Maybe FaceDetail)+    , _frFace       :: !(Maybe Face)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'FaceRecord' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'frFaceDetail' - Undocumented member.+--+-- * 'frFace' - Undocumented member.+faceRecord+    :: FaceRecord+faceRecord =+    FaceRecord'+    { _frFaceDetail = Nothing+    , _frFace = Nothing+    }++-- | Undocumented member.+frFaceDetail :: Lens' FaceRecord (Maybe FaceDetail)+frFaceDetail = lens _frFaceDetail (\ s a -> s{_frFaceDetail = a});++-- | Undocumented member.+frFace :: Lens' FaceRecord (Maybe Face)+frFace = lens _frFace (\ s a -> s{_frFace = a});++instance FromJSON FaceRecord where+        parseJSON+          = withObject "FaceRecord"+              (\ x ->+                 FaceRecord' <$>+                   (x .:? "FaceDetail") <*> (x .:? "Face"))++instance Hashable FaceRecord++instance NFData FaceRecord++-- | Gender of the face and the confidence level in the determination.+--+--+--+-- /See:/ 'gender' smart constructor.+data Gender = Gender'+    { _gValue      :: !(Maybe GenderType)+    , _gConfidence :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Gender' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gValue' - Gender of the face.+--+-- * 'gConfidence' - Level of confidence in the determination.+gender+    :: Gender+gender =+    Gender'+    { _gValue = Nothing+    , _gConfidence = Nothing+    }++-- | Gender of the face.+gValue :: Lens' Gender (Maybe GenderType)+gValue = lens _gValue (\ s a -> s{_gValue = a});++-- | Level of confidence in the determination.+gConfidence :: Lens' Gender (Maybe Double)+gConfidence = lens _gConfidence (\ s a -> s{_gConfidence = a});++instance FromJSON Gender where+        parseJSON+          = withObject "Gender"+              (\ x ->+                 Gender' <$> (x .:? "Value") <*> (x .:? "Confidence"))++instance Hashable Gender++instance NFData Gender++-- | Provides the source image either as bytes or an S3 object.+--+--+--+-- /See:/ 'image' smart constructor.+data Image = Image'+    { _iS3Object :: !(Maybe S3Object)+    , _iBytes    :: !(Maybe Base64)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Image' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iS3Object' - Identifies an S3 object as the image source.+--+-- * 'iBytes' - Blob of image bytes up to 5 MBs.-- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.+image+    :: Image+image =+    Image'+    { _iS3Object = Nothing+    , _iBytes = Nothing+    }++-- | Identifies an S3 object as the image source.+iS3Object :: Lens' Image (Maybe S3Object)+iS3Object = lens _iS3Object (\ s a -> s{_iS3Object = a});++-- | Blob of image bytes up to 5 MBs.-- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.+iBytes :: Lens' Image (Maybe ByteString)+iBytes = lens _iBytes (\ s a -> s{_iBytes = a}) . mapping _Base64;++instance Hashable Image++instance NFData Image++instance ToJSON Image where+        toJSON Image'{..}+          = object+              (catMaybes+                 [("S3Object" .=) <$> _iS3Object,+                  ("Bytes" .=) <$> _iBytes])++-- | Identifies image brightness and sharpness.+--+--+--+-- /See:/ 'imageQuality' smart constructor.+data ImageQuality = ImageQuality'+    { _iqSharpness  :: !(Maybe Double)+    , _iqBrightness :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ImageQuality' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iqSharpness' - Value representing sharpness of the face.+--+-- * 'iqBrightness' - Value representing brightness of the face. The service returns a value between 0 and 1 (inclusive).+imageQuality+    :: ImageQuality+imageQuality =+    ImageQuality'+    { _iqSharpness = Nothing+    , _iqBrightness = Nothing+    }++-- | Value representing sharpness of the face.+iqSharpness :: Lens' ImageQuality (Maybe Double)+iqSharpness = lens _iqSharpness (\ s a -> s{_iqSharpness = a});++-- | Value representing brightness of the face. The service returns a value between 0 and 1 (inclusive).+iqBrightness :: Lens' ImageQuality (Maybe Double)+iqBrightness = lens _iqBrightness (\ s a -> s{_iqBrightness = a});++instance FromJSON ImageQuality where+        parseJSON+          = withObject "ImageQuality"+              (\ x ->+                 ImageQuality' <$>+                   (x .:? "Sharpness") <*> (x .:? "Brightness"))++instance Hashable ImageQuality++instance NFData ImageQuality++-- | Structure containing details about the detected label, including bounding box, name, and level of confidence.+--+--+--+-- /See:/ 'label' smart constructor.+data Label = Label'+    { _lConfidence :: !(Maybe Double)+    , _lName       :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Label' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lConfidence' - Level of confidence.+--+-- * 'lName' - The name (label) of the object.+label+    :: Label+label =+    Label'+    { _lConfidence = Nothing+    , _lName = Nothing+    }++-- | Level of confidence.+lConfidence :: Lens' Label (Maybe Double)+lConfidence = lens _lConfidence (\ s a -> s{_lConfidence = a});++-- | The name (label) of the object.+lName :: Lens' Label (Maybe Text)+lName = lens _lName (\ s a -> s{_lName = a});++instance FromJSON Label where+        parseJSON+          = withObject "Label"+              (\ x ->+                 Label' <$> (x .:? "Confidence") <*> (x .:? "Name"))++instance Hashable Label++instance NFData Label++-- | Indicates the location of the landmark on the face.+--+--+--+-- /See:/ 'landmark' smart constructor.+data Landmark = Landmark'+    { _lType :: !(Maybe LandmarkType)+    , _lX    :: !(Maybe Double)+    , _lY    :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Landmark' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lType' - Type of the landmark.+--+-- * 'lX' - x-coordinate from the top left of the landmark expressed as the ration of the width of the image. For example, if the images is 700x200 and the x-coordinate of the landmark is at 350 pixels, then this value is 0.5.+--+-- * 'lY' - y-coordinate from the top left of the landmark expressed as the ration of the height of the image. For example, if the images is 700x200 and the y-coordinate of the landmark is at 100 pixels, then this value is 0.5.+landmark+    :: Landmark+landmark =+    Landmark'+    { _lType = Nothing+    , _lX = Nothing+    , _lY = Nothing+    }++-- | Type of the landmark.+lType :: Lens' Landmark (Maybe LandmarkType)+lType = lens _lType (\ s a -> s{_lType = a});++-- | x-coordinate from the top left of the landmark expressed as the ration of the width of the image. For example, if the images is 700x200 and the x-coordinate of the landmark is at 350 pixels, then this value is 0.5.+lX :: Lens' Landmark (Maybe Double)+lX = lens _lX (\ s a -> s{_lX = a});++-- | y-coordinate from the top left of the landmark expressed as the ration of the height of the image. For example, if the images is 700x200 and the y-coordinate of the landmark is at 100 pixels, then this value is 0.5.+lY :: Lens' Landmark (Maybe Double)+lY = lens _lY (\ s a -> s{_lY = a});++instance FromJSON Landmark where+        parseJSON+          = withObject "Landmark"+              (\ x ->+                 Landmark' <$>+                   (x .:? "Type") <*> (x .:? "X") <*> (x .:? "Y"))++instance Hashable Landmark++instance NFData Landmark++-- | Indicates whether or not the mouth on the face is open, and the confidence level in the determination.+--+--+--+-- /See:/ 'mouthOpen' smart constructor.+data MouthOpen = MouthOpen'+    { _moValue      :: !(Maybe Bool)+    , _moConfidence :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'MouthOpen' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'moValue' - Boolean value that indicates whether the mouth on the face is open or not.+--+-- * 'moConfidence' - Level of confidence in the determination.+mouthOpen+    :: MouthOpen+mouthOpen =+    MouthOpen'+    { _moValue = Nothing+    , _moConfidence = Nothing+    }++-- | Boolean value that indicates whether the mouth on the face is open or not.+moValue :: Lens' MouthOpen (Maybe Bool)+moValue = lens _moValue (\ s a -> s{_moValue = a});++-- | Level of confidence in the determination.+moConfidence :: Lens' MouthOpen (Maybe Double)+moConfidence = lens _moConfidence (\ s a -> s{_moConfidence = a});++instance FromJSON MouthOpen where+        parseJSON+          = withObject "MouthOpen"+              (\ x ->+                 MouthOpen' <$>+                   (x .:? "Value") <*> (x .:? "Confidence"))++instance Hashable MouthOpen++instance NFData MouthOpen++-- | Indicates whether or not the face has a mustache, and the confidence level in the determination.+--+--+--+-- /See:/ 'mustache' smart constructor.+data Mustache = Mustache'+    { _mValue      :: !(Maybe Bool)+    , _mConfidence :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Mustache' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mValue' - Boolean value that indicates whether the face has mustache or not.+--+-- * 'mConfidence' - Level of confidence in the determination.+mustache+    :: Mustache+mustache =+    Mustache'+    { _mValue = Nothing+    , _mConfidence = Nothing+    }++-- | Boolean value that indicates whether the face has mustache or not.+mValue :: Lens' Mustache (Maybe Bool)+mValue = lens _mValue (\ s a -> s{_mValue = a});++-- | Level of confidence in the determination.+mConfidence :: Lens' Mustache (Maybe Double)+mConfidence = lens _mConfidence (\ s a -> s{_mConfidence = a});++instance FromJSON Mustache where+        parseJSON+          = withObject "Mustache"+              (\ x ->+                 Mustache' <$>+                   (x .:? "Value") <*> (x .:? "Confidence"))++instance Hashable Mustache++instance NFData Mustache++-- | Indicates the pose of the face as determined by pitch, roll, and the yaw.+--+--+--+-- /See:/ 'pose' smart constructor.+data Pose = Pose'+    { _pYaw   :: !(Maybe Double)+    , _pRoll  :: !(Maybe Double)+    , _pPitch :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Pose' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pYaw' - Value representing the face rotation on the yaw axis.+--+-- * 'pRoll' - Value representing the face rotation on the roll axis.+--+-- * 'pPitch' - Value representing the face rotation on the pitch axis.+pose+    :: Pose+pose =+    Pose'+    { _pYaw = Nothing+    , _pRoll = Nothing+    , _pPitch = Nothing+    }++-- | Value representing the face rotation on the yaw axis.+pYaw :: Lens' Pose (Maybe Double)+pYaw = lens _pYaw (\ s a -> s{_pYaw = a});++-- | Value representing the face rotation on the roll axis.+pRoll :: Lens' Pose (Maybe Double)+pRoll = lens _pRoll (\ s a -> s{_pRoll = a});++-- | Value representing the face rotation on the pitch axis.+pPitch :: Lens' Pose (Maybe Double)+pPitch = lens _pPitch (\ s a -> s{_pPitch = a});++instance FromJSON Pose where+        parseJSON+          = withObject "Pose"+              (\ x ->+                 Pose' <$>+                   (x .:? "Yaw") <*> (x .:? "Roll") <*> (x .:? "Pitch"))++instance Hashable Pose++instance NFData Pose++-- | Provides the S3 bucket name and object name.+--+--+--+-- /See:/ 's3Object' smart constructor.+data S3Object = S3Object'+    { _soBucket  :: !(Maybe Text)+    , _soName    :: !(Maybe Text)+    , _soVersion :: !(Maybe Text)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'S3Object' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'soBucket' - Name of the S3 bucket.+--+-- * 'soName' - S3 object key name.+--+-- * 'soVersion' - If the bucket is versioning enabled, you can specify the object version.+s3Object+    :: S3Object+s3Object =+    S3Object'+    { _soBucket = Nothing+    , _soName = Nothing+    , _soVersion = Nothing+    }++-- | Name of the S3 bucket.+soBucket :: Lens' S3Object (Maybe Text)+soBucket = lens _soBucket (\ s a -> s{_soBucket = a});++-- | S3 object key name.+soName :: Lens' S3Object (Maybe Text)+soName = lens _soName (\ s a -> s{_soName = a});++-- | If the bucket is versioning enabled, you can specify the object version.+soVersion :: Lens' S3Object (Maybe Text)+soVersion = lens _soVersion (\ s a -> s{_soVersion = a});++instance Hashable S3Object++instance NFData S3Object++instance ToJSON S3Object where+        toJSON S3Object'{..}+          = object+              (catMaybes+                 [("Bucket" .=) <$> _soBucket,+                  ("Name" .=) <$> _soName,+                  ("Version" .=) <$> _soVersion])++-- | Indicates whether or not the face is smiling, and the confidence level in the determination.+--+--+--+-- /See:/ 'smile' smart constructor.+data Smile = Smile'+    { _smiValue      :: !(Maybe Bool)+    , _smiConfidence :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Smile' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smiValue' - Boolean value that indicates whether the face is smiling or not.+--+-- * 'smiConfidence' - Level of confidence in the determination.+smile+    :: Smile+smile =+    Smile'+    { _smiValue = Nothing+    , _smiConfidence = Nothing+    }++-- | Boolean value that indicates whether the face is smiling or not.+smiValue :: Lens' Smile (Maybe Bool)+smiValue = lens _smiValue (\ s a -> s{_smiValue = a});++-- | Level of confidence in the determination.+smiConfidence :: Lens' Smile (Maybe Double)+smiConfidence = lens _smiConfidence (\ s a -> s{_smiConfidence = a});++instance FromJSON Smile where+        parseJSON+          = withObject "Smile"+              (\ x ->+                 Smile' <$> (x .:? "Value") <*> (x .:? "Confidence"))++instance Hashable Smile++instance NFData Smile++-- | Indicates whether or not the face is wearing sunglasses, and the confidence level in the determination.+--+--+--+-- /See:/ 'sunglasses' smart constructor.+data Sunglasses = Sunglasses'+    { _sValue      :: !(Maybe Bool)+    , _sConfidence :: !(Maybe Double)+    } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Sunglasses' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sValue' - Boolean value that indicates whether the face is wearing sunglasses or not.+--+-- * 'sConfidence' - Level of confidence in the determination.+sunglasses+    :: Sunglasses+sunglasses =+    Sunglasses'+    { _sValue = Nothing+    , _sConfidence = Nothing+    }++-- | Boolean value that indicates whether the face is wearing sunglasses or not.+sValue :: Lens' Sunglasses (Maybe Bool)+sValue = lens _sValue (\ s a -> s{_sValue = a});++-- | Level of confidence in the determination.+sConfidence :: Lens' Sunglasses (Maybe Double)+sConfidence = lens _sConfidence (\ s a -> s{_sConfidence = a});++instance FromJSON Sunglasses where+        parseJSON+          = withObject "Sunglasses"+              (\ x ->+                 Sunglasses' <$>+                   (x .:? "Value") <*> (x .:? "Confidence"))++instance Hashable Sunglasses++instance NFData Sunglasses
+ gen/Network/AWS/Rekognition/Types/Sum.hs view
@@ -0,0 +1,243 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE LambdaCase         #-}+{-# LANGUAGE OverloadedStrings  #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Network.AWS.Rekognition.Types.Sum+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.AWS.Rekognition.Types.Sum where++import           Network.AWS.Prelude++data Attribute+    = All+    | Default+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)++instance FromText Attribute where+    parser = takeLowerText >>= \case+        "all" -> pure All+        "default" -> pure Default+        e -> fromTextError $ "Failure parsing Attribute from value: '" <> e+           <> "'. Accepted values: all, default"++instance ToText Attribute where+    toText = \case+        All -> "ALL"+        Default -> "DEFAULT"++instance Hashable     Attribute+instance NFData       Attribute+instance ToByteString Attribute+instance ToQuery      Attribute+instance ToHeader     Attribute++instance ToJSON Attribute where+    toJSON = toJSONText++data EmotionName+    = Angry+    | Calm+    | Confused+    | Disgusted+    | Happy+    | Sad+    | Surprised+    | Unknown+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)++instance FromText EmotionName where+    parser = takeLowerText >>= \case+        "angry" -> pure Angry+        "calm" -> pure Calm+        "confused" -> pure Confused+        "disgusted" -> pure Disgusted+        "happy" -> pure Happy+        "sad" -> pure Sad+        "surprised" -> pure Surprised+        "unknown" -> pure Unknown+        e -> fromTextError $ "Failure parsing EmotionName from value: '" <> e+           <> "'. Accepted values: angry, calm, confused, disgusted, happy, sad, surprised, unknown"++instance ToText EmotionName where+    toText = \case+        Angry -> "ANGRY"+        Calm -> "CALM"+        Confused -> "CONFUSED"+        Disgusted -> "DISGUSTED"+        Happy -> "HAPPY"+        Sad -> "SAD"+        Surprised -> "SURPRISED"+        Unknown -> "UNKNOWN"++instance Hashable     EmotionName+instance NFData       EmotionName+instance ToByteString EmotionName+instance ToQuery      EmotionName+instance ToHeader     EmotionName++instance FromJSON EmotionName where+    parseJSON = parseJSONText "EmotionName"++data GenderType+    = Female+    | Male+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)++instance FromText GenderType where+    parser = takeLowerText >>= \case+        "female" -> pure Female+        "male" -> pure Male+        e -> fromTextError $ "Failure parsing GenderType from value: '" <> e+           <> "'. Accepted values: female, male"++instance ToText GenderType where+    toText = \case+        Female -> "FEMALE"+        Male -> "MALE"++instance Hashable     GenderType+instance NFData       GenderType+instance ToByteString GenderType+instance ToQuery      GenderType+instance ToHeader     GenderType++instance FromJSON GenderType where+    parseJSON = parseJSONText "GenderType"++data LandmarkType+    = EyeLeft+    | EyeRight+    | LeftEyeDown+    | LeftEyeLeft+    | LeftEyeRight+    | LeftEyeUp+    | LeftEyebrowLeft+    | LeftEyebrowRight+    | LeftEyebrowUp+    | LeftPupil+    | MouthDown+    | MouthLeft+    | MouthRight+    | MouthUp+    | Nose+    | NoseLeft+    | NoseRight+    | RightEyeDown+    | RightEyeLeft+    | RightEyeRight+    | RightEyeUp+    | RightEyebrowLeft+    | RightEyebrowRight+    | RightEyebrowUp+    | RightPupil+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)++instance FromText LandmarkType where+    parser = takeLowerText >>= \case+        "eye_left" -> pure EyeLeft+        "eye_right" -> pure EyeRight+        "left_eye_down" -> pure LeftEyeDown+        "left_eye_left" -> pure LeftEyeLeft+        "left_eye_right" -> pure LeftEyeRight+        "left_eye_up" -> pure LeftEyeUp+        "left_eyebrow_left" -> pure LeftEyebrowLeft+        "left_eyebrow_right" -> pure LeftEyebrowRight+        "left_eyebrow_up" -> pure LeftEyebrowUp+        "left_pupil" -> pure LeftPupil+        "mouth_down" -> pure MouthDown+        "mouth_left" -> pure MouthLeft+        "mouth_right" -> pure MouthRight+        "mouth_up" -> pure MouthUp+        "nose" -> pure Nose+        "nose_left" -> pure NoseLeft+        "nose_right" -> pure NoseRight+        "right_eye_down" -> pure RightEyeDown+        "right_eye_left" -> pure RightEyeLeft+        "right_eye_right" -> pure RightEyeRight+        "right_eye_up" -> pure RightEyeUp+        "right_eyebrow_left" -> pure RightEyebrowLeft+        "right_eyebrow_right" -> pure RightEyebrowRight+        "right_eyebrow_up" -> pure RightEyebrowUp+        "right_pupil" -> pure RightPupil+        e -> fromTextError $ "Failure parsing LandmarkType from value: '" <> e+           <> "'. Accepted values: eye_left, eye_right, left_eye_down, left_eye_left, left_eye_right, left_eye_up, left_eyebrow_left, left_eyebrow_right, left_eyebrow_up, left_pupil, mouth_down, mouth_left, mouth_right, mouth_up, nose, nose_left, nose_right, right_eye_down, right_eye_left, right_eye_right, right_eye_up, right_eyebrow_left, right_eyebrow_right, right_eyebrow_up, right_pupil"++instance ToText LandmarkType where+    toText = \case+        EyeLeft -> "EYE_LEFT"+        EyeRight -> "EYE_RIGHT"+        LeftEyeDown -> "LEFT_EYE_DOWN"+        LeftEyeLeft -> "LEFT_EYE_LEFT"+        LeftEyeRight -> "LEFT_EYE_RIGHT"+        LeftEyeUp -> "LEFT_EYE_UP"+        LeftEyebrowLeft -> "LEFT_EYEBROW_LEFT"+        LeftEyebrowRight -> "LEFT_EYEBROW_RIGHT"+        LeftEyebrowUp -> "LEFT_EYEBROW_UP"+        LeftPupil -> "LEFT_PUPIL"+        MouthDown -> "MOUTH_DOWN"+        MouthLeft -> "MOUTH_LEFT"+        MouthRight -> "MOUTH_RIGHT"+        MouthUp -> "MOUTH_UP"+        Nose -> "NOSE"+        NoseLeft -> "NOSE_LEFT"+        NoseRight -> "NOSE_RIGHT"+        RightEyeDown -> "RIGHT_EYE_DOWN"+        RightEyeLeft -> "RIGHT_EYE_LEFT"+        RightEyeRight -> "RIGHT_EYE_RIGHT"+        RightEyeUp -> "RIGHT_EYE_UP"+        RightEyebrowLeft -> "RIGHT_EYEBROW_LEFT"+        RightEyebrowRight -> "RIGHT_EYEBROW_RIGHT"+        RightEyebrowUp -> "RIGHT_EYEBROW_UP"+        RightPupil -> "RIGHT_PUPIL"++instance Hashable     LandmarkType+instance NFData       LandmarkType+instance ToByteString LandmarkType+instance ToQuery      LandmarkType+instance ToHeader     LandmarkType++instance FromJSON LandmarkType where+    parseJSON = parseJSONText "LandmarkType"++data OrientationCorrection+    = Rotate0+    | Rotate180+    | Rotate270+    | Rotate90+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)++instance FromText OrientationCorrection where+    parser = takeLowerText >>= \case+        "rotate_0" -> pure Rotate0+        "rotate_180" -> pure Rotate180+        "rotate_270" -> pure Rotate270+        "rotate_90" -> pure Rotate90+        e -> fromTextError $ "Failure parsing OrientationCorrection from value: '" <> e+           <> "'. Accepted values: rotate_0, rotate_180, rotate_270, rotate_90"++instance ToText OrientationCorrection where+    toText = \case+        Rotate0 -> "ROTATE_0"+        Rotate180 -> "ROTATE_180"+        Rotate270 -> "ROTATE_270"+        Rotate90 -> "ROTATE_90"++instance Hashable     OrientationCorrection+instance NFData       OrientationCorrection+instance ToByteString OrientationCorrection+instance ToQuery      OrientationCorrection+instance ToHeader     OrientationCorrection++instance FromJSON OrientationCorrection where+    parseJSON = parseJSONText "OrientationCorrection"
+ gen/Network/AWS/Rekognition/Waiters.hs view
@@ -0,0 +1,21 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies      #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Network.AWS.Rekognition.Waiters+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.AWS.Rekognition.Waiters where++import           Network.AWS.Lens+import           Network.AWS.Prelude+import           Network.AWS.Rekognition.Types+import           Network.AWS.Waiter
+ src/.gitkeep view
+ test/Main.hs view
@@ -0,0 +1,21 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Main+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Main (main) where++import Test.Tasty+import Test.AWS.Rekognition+import Test.AWS.Rekognition.Internal++main :: IO ()+main = defaultMain $ testGroup "Rekognition"+    [ testGroup "tests"    tests+    , testGroup "fixtures" fixtures+    ]
+ test/Test/AWS/Gen/Rekognition.hs view
@@ -0,0 +1,237 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-orphans        #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Test.AWS.Gen.Rekognition+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Test.AWS.Gen.Rekognition where++import Data.Proxy+import Test.AWS.Fixture+import Test.AWS.Prelude+import Test.Tasty+import Network.AWS.Rekognition+import Test.AWS.Rekognition.Internal++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+--     [ testGroup "request"+--         [ requestListCollections $+--             listCollections+--+--         , requestDeleteCollection $+--             deleteCollection+--+--         , requestCreateCollection $+--             createCollection+--+--         , requestDetectLabels $+--             detectLabels+--+--         , requestSearchFacesByImage $+--             searchFacesByImage+--+--         , requestSearchFaces $+--             searchFaces+--+--         , requestIndexFaces $+--             indexFaces+--+--         , requestCompareFaces $+--             compareFaces+--+--         , requestDetectFaces $+--             detectFaces+--+--         , requestListFaces $+--             listFaces+--+--         , requestDeleteFaces $+--             deleteFaces+--+--           ]++--     , testGroup "response"+--         [ responseListCollections $+--             listCollectionsResponse+--+--         , responseDeleteCollection $+--             deleteCollectionResponse+--+--         , responseCreateCollection $+--             createCollectionResponse+--+--         , responseDetectLabels $+--             detectLabelsResponse+--+--         , responseSearchFacesByImage $+--             searchFacesByImageResponse+--+--         , responseSearchFaces $+--             searchFacesResponse+--+--         , responseIndexFaces $+--             indexFacesResponse+--+--         , responseCompareFaces $+--             compareFacesResponse+--+--         , responseDetectFaces $+--             detectFacesResponse+--+--         , responseListFaces $+--             listFacesResponse+--+--         , responseDeleteFaces $+--             deleteFacesResponse+--+--           ]+--     ]++-- Requests++requestListCollections :: ListCollections -> TestTree+requestListCollections = req+    "ListCollections"+    "fixture/ListCollections.yaml"++requestDeleteCollection :: DeleteCollection -> TestTree+requestDeleteCollection = req+    "DeleteCollection"+    "fixture/DeleteCollection.yaml"++requestCreateCollection :: CreateCollection -> TestTree+requestCreateCollection = req+    "CreateCollection"+    "fixture/CreateCollection.yaml"++requestDetectLabels :: DetectLabels -> TestTree+requestDetectLabels = req+    "DetectLabels"+    "fixture/DetectLabels.yaml"++requestSearchFacesByImage :: SearchFacesByImage -> TestTree+requestSearchFacesByImage = req+    "SearchFacesByImage"+    "fixture/SearchFacesByImage.yaml"++requestSearchFaces :: SearchFaces -> TestTree+requestSearchFaces = req+    "SearchFaces"+    "fixture/SearchFaces.yaml"++requestIndexFaces :: IndexFaces -> TestTree+requestIndexFaces = req+    "IndexFaces"+    "fixture/IndexFaces.yaml"++requestCompareFaces :: CompareFaces -> TestTree+requestCompareFaces = req+    "CompareFaces"+    "fixture/CompareFaces.yaml"++requestDetectFaces :: DetectFaces -> TestTree+requestDetectFaces = req+    "DetectFaces"+    "fixture/DetectFaces.yaml"++requestListFaces :: ListFaces -> TestTree+requestListFaces = req+    "ListFaces"+    "fixture/ListFaces.yaml"++requestDeleteFaces :: DeleteFaces -> TestTree+requestDeleteFaces = req+    "DeleteFaces"+    "fixture/DeleteFaces.yaml"++-- Responses++responseListCollections :: ListCollectionsResponse -> TestTree+responseListCollections = res+    "ListCollectionsResponse"+    "fixture/ListCollectionsResponse.proto"+    rekognition+    (Proxy :: Proxy ListCollections)++responseDeleteCollection :: DeleteCollectionResponse -> TestTree+responseDeleteCollection = res+    "DeleteCollectionResponse"+    "fixture/DeleteCollectionResponse.proto"+    rekognition+    (Proxy :: Proxy DeleteCollection)++responseCreateCollection :: CreateCollectionResponse -> TestTree+responseCreateCollection = res+    "CreateCollectionResponse"+    "fixture/CreateCollectionResponse.proto"+    rekognition+    (Proxy :: Proxy CreateCollection)++responseDetectLabels :: DetectLabelsResponse -> TestTree+responseDetectLabels = res+    "DetectLabelsResponse"+    "fixture/DetectLabelsResponse.proto"+    rekognition+    (Proxy :: Proxy DetectLabels)++responseSearchFacesByImage :: SearchFacesByImageResponse -> TestTree+responseSearchFacesByImage = res+    "SearchFacesByImageResponse"+    "fixture/SearchFacesByImageResponse.proto"+    rekognition+    (Proxy :: Proxy SearchFacesByImage)++responseSearchFaces :: SearchFacesResponse -> TestTree+responseSearchFaces = res+    "SearchFacesResponse"+    "fixture/SearchFacesResponse.proto"+    rekognition+    (Proxy :: Proxy SearchFaces)++responseIndexFaces :: IndexFacesResponse -> TestTree+responseIndexFaces = res+    "IndexFacesResponse"+    "fixture/IndexFacesResponse.proto"+    rekognition+    (Proxy :: Proxy IndexFaces)++responseCompareFaces :: CompareFacesResponse -> TestTree+responseCompareFaces = res+    "CompareFacesResponse"+    "fixture/CompareFacesResponse.proto"+    rekognition+    (Proxy :: Proxy CompareFaces)++responseDetectFaces :: DetectFacesResponse -> TestTree+responseDetectFaces = res+    "DetectFacesResponse"+    "fixture/DetectFacesResponse.proto"+    rekognition+    (Proxy :: Proxy DetectFaces)++responseListFaces :: ListFacesResponse -> TestTree+responseListFaces = res+    "ListFacesResponse"+    "fixture/ListFacesResponse.proto"+    rekognition+    (Proxy :: Proxy ListFaces)++responseDeleteFaces :: DeleteFacesResponse -> TestTree+responseDeleteFaces = res+    "DeleteFacesResponse"+    "fixture/DeleteFacesResponse.proto"+    rekognition+    (Proxy :: Proxy DeleteFaces)
+ test/Test/AWS/Rekognition.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.AWS.Rekognition+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Test.AWS.Rekognition+    ( tests+    , fixtures+    ) where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/AWS/Rekognition/Internal.hs view
@@ -0,0 +1,9 @@+-- |+-- Module      : Test.AWS.Rekognition.Internal+-- Copyright   : (c) 2013-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Test.AWS.Rekognition.Internal where