amazonka-cognito-identity-1.4.3: gen/Network/AWS/CognitoIdentity/MergeDeveloperIdentities.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.CognitoIdentity.MergeDeveloperIdentities
-- 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)
--
-- Merges two users having different 'IdentityId's, existing in the same identity pool, and identified by the same developer provider. You can use this action to request that discrete users be merged and identified as a single user in the Cognito environment. Cognito associates the given source user ('SourceUserIdentifier') with the 'IdentityId' of the 'DestinationUserIdentifier'. Only developer-authenticated users can be merged. If the users to be merged are associated with the same public provider, but as two different users, an exception will be thrown.
--
-- You must use AWS Developer credentials to call this API.
module Network.AWS.CognitoIdentity.MergeDeveloperIdentities
(
-- * Creating a Request
mergeDeveloperIdentities
, MergeDeveloperIdentities
-- * Request Lenses
, mdiSourceUserIdentifier
, mdiDestinationUserIdentifier
, mdiDeveloperProviderName
, mdiIdentityPoolId
-- * Destructuring the Response
, mergeDeveloperIdentitiesResponse
, MergeDeveloperIdentitiesResponse
-- * Response Lenses
, mdirsIdentityId
, mdirsResponseStatus
) where
import Network.AWS.CognitoIdentity.Types
import Network.AWS.CognitoIdentity.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | Input to the 'MergeDeveloperIdentities' action.
--
-- /See:/ 'mergeDeveloperIdentities' smart constructor.
data MergeDeveloperIdentities = MergeDeveloperIdentities'
{ _mdiSourceUserIdentifier :: !Text
, _mdiDestinationUserIdentifier :: !Text
, _mdiDeveloperProviderName :: !Text
, _mdiIdentityPoolId :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'MergeDeveloperIdentities' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'mdiSourceUserIdentifier'
--
-- * 'mdiDestinationUserIdentifier'
--
-- * 'mdiDeveloperProviderName'
--
-- * 'mdiIdentityPoolId'
mergeDeveloperIdentities
:: Text -- ^ 'mdiSourceUserIdentifier'
-> Text -- ^ 'mdiDestinationUserIdentifier'
-> Text -- ^ 'mdiDeveloperProviderName'
-> Text -- ^ 'mdiIdentityPoolId'
-> MergeDeveloperIdentities
mergeDeveloperIdentities pSourceUserIdentifier_ pDestinationUserIdentifier_ pDeveloperProviderName_ pIdentityPoolId_ =
MergeDeveloperIdentities'
{ _mdiSourceUserIdentifier = pSourceUserIdentifier_
, _mdiDestinationUserIdentifier = pDestinationUserIdentifier_
, _mdiDeveloperProviderName = pDeveloperProviderName_
, _mdiIdentityPoolId = pIdentityPoolId_
}
-- | User identifier for the source user. The value should be a 'DeveloperUserIdentifier'.
mdiSourceUserIdentifier :: Lens' MergeDeveloperIdentities Text
mdiSourceUserIdentifier = lens _mdiSourceUserIdentifier (\ s a -> s{_mdiSourceUserIdentifier = a});
-- | User identifier for the destination user. The value should be a 'DeveloperUserIdentifier'.
mdiDestinationUserIdentifier :: Lens' MergeDeveloperIdentities Text
mdiDestinationUserIdentifier = lens _mdiDestinationUserIdentifier (\ s a -> s{_mdiDestinationUserIdentifier = a});
-- | The \"domain\" by which Cognito will refer to your users. This is a (pseudo) domain name that you provide while creating an identity pool. This name acts as a placeholder that allows your backend and the Cognito service to communicate about the developer provider. For the 'DeveloperProviderName', you can use letters as well as period (.), underscore (_), and dash (-).
mdiDeveloperProviderName :: Lens' MergeDeveloperIdentities Text
mdiDeveloperProviderName = lens _mdiDeveloperProviderName (\ s a -> s{_mdiDeveloperProviderName = a});
-- | An identity pool ID in the format REGION:GUID.
mdiIdentityPoolId :: Lens' MergeDeveloperIdentities Text
mdiIdentityPoolId = lens _mdiIdentityPoolId (\ s a -> s{_mdiIdentityPoolId = a});
instance AWSRequest MergeDeveloperIdentities where
type Rs MergeDeveloperIdentities =
MergeDeveloperIdentitiesResponse
request = postJSON cognitoIdentity
response
= receiveJSON
(\ s h x ->
MergeDeveloperIdentitiesResponse' <$>
(x .?> "IdentityId") <*> (pure (fromEnum s)))
instance Hashable MergeDeveloperIdentities
instance NFData MergeDeveloperIdentities
instance ToHeaders MergeDeveloperIdentities where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWSCognitoIdentityService.MergeDeveloperIdentities"
:: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON MergeDeveloperIdentities where
toJSON MergeDeveloperIdentities'{..}
= object
(catMaybes
[Just
("SourceUserIdentifier" .= _mdiSourceUserIdentifier),
Just
("DestinationUserIdentifier" .=
_mdiDestinationUserIdentifier),
Just
("DeveloperProviderName" .=
_mdiDeveloperProviderName),
Just ("IdentityPoolId" .= _mdiIdentityPoolId)])
instance ToPath MergeDeveloperIdentities where
toPath = const "/"
instance ToQuery MergeDeveloperIdentities where
toQuery = const mempty
-- | Returned in response to a successful 'MergeDeveloperIdentities' action.
--
-- /See:/ 'mergeDeveloperIdentitiesResponse' smart constructor.
data MergeDeveloperIdentitiesResponse = MergeDeveloperIdentitiesResponse'
{ _mdirsIdentityId :: !(Maybe Text)
, _mdirsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'MergeDeveloperIdentitiesResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'mdirsIdentityId'
--
-- * 'mdirsResponseStatus'
mergeDeveloperIdentitiesResponse
:: Int -- ^ 'mdirsResponseStatus'
-> MergeDeveloperIdentitiesResponse
mergeDeveloperIdentitiesResponse pResponseStatus_ =
MergeDeveloperIdentitiesResponse'
{ _mdirsIdentityId = Nothing
, _mdirsResponseStatus = pResponseStatus_
}
-- | A unique identifier in the format REGION:GUID.
mdirsIdentityId :: Lens' MergeDeveloperIdentitiesResponse (Maybe Text)
mdirsIdentityId = lens _mdirsIdentityId (\ s a -> s{_mdirsIdentityId = a});
-- | The response status code.
mdirsResponseStatus :: Lens' MergeDeveloperIdentitiesResponse Int
mdirsResponseStatus = lens _mdirsResponseStatus (\ s a -> s{_mdirsResponseStatus = a});
instance NFData MergeDeveloperIdentitiesResponse