{-# 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.IAM.GetUserPolicy -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Retrieves the specified inline policy document that is embedded in the specified IAM user. -- -- Policies returned by this API are URL-encoded compliant with . You can use a URL decoding method to convert the policy back to plain JSON text. For example, if you use Java, you can use the 'decode' method of the 'java.net.URLDecoder' utility class in the Java SDK. Other languages and SDKs provide similar functionality. -- -- An IAM user can also have managed policies attached to it. To retrieve a managed policy document that is attached to a user, use < GetPolicy> to determine the policy\'s default version, then use < GetPolicyVersion> to retrieve the policy document. -- -- For more information about policies, see in the /IAM User Guide/. module Network.AWS.IAM.GetUserPolicy ( -- * Creating a Request getUserPolicy , GetUserPolicy -- * Request Lenses , gupUserName , gupPolicyName -- * Destructuring the Response , getUserPolicyResponse , GetUserPolicyResponse -- * Response Lenses , guprsResponseStatus , guprsUserName , guprsPolicyName , guprsPolicyDocument ) where import Network.AWS.IAM.Types import Network.AWS.IAM.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'getUserPolicy' smart constructor. data GetUserPolicy = GetUserPolicy' { _gupUserName :: !Text , _gupPolicyName :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GetUserPolicy' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gupUserName' -- -- * 'gupPolicyName' getUserPolicy :: Text -- ^ 'gupUserName' -> Text -- ^ 'gupPolicyName' -> GetUserPolicy getUserPolicy pUserName_ pPolicyName_ = GetUserPolicy' { _gupUserName = pUserName_ , _gupPolicyName = pPolicyName_ } -- | The name of the user who the policy is associated with. -- -- The for this parameter is a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.\'- gupUserName :: Lens' GetUserPolicy Text gupUserName = lens _gupUserName (\ s a -> s{_gupUserName = a}); -- | The name of the policy document to get. -- -- The for this parameter is a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: =,.\'- gupPolicyName :: Lens' GetUserPolicy Text gupPolicyName = lens _gupPolicyName (\ s a -> s{_gupPolicyName = a}); instance AWSRequest GetUserPolicy where type Rs GetUserPolicy = GetUserPolicyResponse request = postQuery iam response = receiveXMLWrapper "GetUserPolicyResult" (\ s h x -> GetUserPolicyResponse' <$> (pure (fromEnum s)) <*> (x .@ "UserName") <*> (x .@ "PolicyName") <*> (x .@ "PolicyDocument")) instance Hashable GetUserPolicy instance NFData GetUserPolicy instance ToHeaders GetUserPolicy where toHeaders = const mempty instance ToPath GetUserPolicy where toPath = const "/" instance ToQuery GetUserPolicy where toQuery GetUserPolicy'{..} = mconcat ["Action" =: ("GetUserPolicy" :: ByteString), "Version" =: ("2010-05-08" :: ByteString), "UserName" =: _gupUserName, "PolicyName" =: _gupPolicyName] -- | Contains the response to a successful < GetUserPolicy> request. -- -- /See:/ 'getUserPolicyResponse' smart constructor. data GetUserPolicyResponse = GetUserPolicyResponse' { _guprsResponseStatus :: !Int , _guprsUserName :: !Text , _guprsPolicyName :: !Text , _guprsPolicyDocument :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GetUserPolicyResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'guprsResponseStatus' -- -- * 'guprsUserName' -- -- * 'guprsPolicyName' -- -- * 'guprsPolicyDocument' getUserPolicyResponse :: Int -- ^ 'guprsResponseStatus' -> Text -- ^ 'guprsUserName' -> Text -- ^ 'guprsPolicyName' -> Text -- ^ 'guprsPolicyDocument' -> GetUserPolicyResponse getUserPolicyResponse pResponseStatus_ pUserName_ pPolicyName_ pPolicyDocument_ = GetUserPolicyResponse' { _guprsResponseStatus = pResponseStatus_ , _guprsUserName = pUserName_ , _guprsPolicyName = pPolicyName_ , _guprsPolicyDocument = pPolicyDocument_ } -- | The response status code. guprsResponseStatus :: Lens' GetUserPolicyResponse Int guprsResponseStatus = lens _guprsResponseStatus (\ s a -> s{_guprsResponseStatus = a}); -- | The user the policy is associated with. guprsUserName :: Lens' GetUserPolicyResponse Text guprsUserName = lens _guprsUserName (\ s a -> s{_guprsUserName = a}); -- | The name of the policy. guprsPolicyName :: Lens' GetUserPolicyResponse Text guprsPolicyName = lens _guprsPolicyName (\ s a -> s{_guprsPolicyName = a}); -- | The policy document. guprsPolicyDocument :: Lens' GetUserPolicyResponse Text guprsPolicyDocument = lens _guprsPolicyDocument (\ s a -> s{_guprsPolicyDocument = a}); instance NFData GetUserPolicyResponse