{-# 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.SNS.CreatePlatformApplication -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a platform application object for one of the supported push -- notification services, such as APNS and GCM, to which devices and mobile -- apps may register. You must specify PlatformPrincipal and -- PlatformCredential attributes when using the 'CreatePlatformApplication' -- action. The PlatformPrincipal is received from the notification service. -- For APNS\/APNS_SANDBOX, PlatformPrincipal is \"SSL certificate\". For -- GCM, PlatformPrincipal is not applicable. For ADM, PlatformPrincipal is -- \"client id\". The PlatformCredential is also received from the -- notification service. For APNS\/APNS_SANDBOX, PlatformCredential is -- \"private key\". For GCM, PlatformCredential is \"API key\". For ADM, -- PlatformCredential is \"client secret\". The PlatformApplicationArn that -- is returned when using 'CreatePlatformApplication' is then used as an -- attribute for the 'CreatePlatformEndpoint' action. For more information, -- see -- . module Network.AWS.SNS.CreatePlatformApplication ( -- * Creating a Request createPlatformApplication , CreatePlatformApplication -- * Request Lenses , cpaName , cpaPlatform , cpaAttributes -- * Destructuring the Response , createPlatformApplicationResponse , CreatePlatformApplicationResponse -- * Response Lenses , cparsPlatformApplicationARN , cparsResponseStatus ) where import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response import Network.AWS.SNS.Types import Network.AWS.SNS.Types.Product -- | Input for CreatePlatformApplication action. -- -- /See:/ 'createPlatformApplication' smart constructor. data CreatePlatformApplication = CreatePlatformApplication' { _cpaName :: !Text , _cpaPlatform :: !Text , _cpaAttributes :: !(Map Text Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CreatePlatformApplication' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cpaName' -- -- * 'cpaPlatform' -- -- * 'cpaAttributes' createPlatformApplication :: Text -- ^ 'cpaName' -> Text -- ^ 'cpaPlatform' -> CreatePlatformApplication createPlatformApplication pName_ pPlatform_ = CreatePlatformApplication' { _cpaName = pName_ , _cpaPlatform = pPlatform_ , _cpaAttributes = mempty } -- | Application names must be made up of only uppercase and lowercase ASCII -- letters, numbers, underscores, hyphens, and periods, and must be between -- 1 and 256 characters long. cpaName :: Lens' CreatePlatformApplication Text cpaName = lens _cpaName (\ s a -> s{_cpaName = a}); -- | The following platforms are supported: ADM (Amazon Device Messaging), -- APNS (Apple Push Notification Service), APNS_SANDBOX, and GCM (Google -- Cloud Messaging). cpaPlatform :: Lens' CreatePlatformApplication Text cpaPlatform = lens _cpaPlatform (\ s a -> s{_cpaPlatform = a}); -- | For a list of attributes, see -- cpaAttributes :: Lens' CreatePlatformApplication (HashMap Text Text) cpaAttributes = lens _cpaAttributes (\ s a -> s{_cpaAttributes = a}) . _Map; instance AWSRequest CreatePlatformApplication where type Rs CreatePlatformApplication = CreatePlatformApplicationResponse request = postQuery sns response = receiveXMLWrapper "CreatePlatformApplicationResult" (\ s h x -> CreatePlatformApplicationResponse' <$> (x .@? "PlatformApplicationArn") <*> (pure (fromEnum s))) instance Hashable CreatePlatformApplication instance ToHeaders CreatePlatformApplication where toHeaders = const mempty instance ToPath CreatePlatformApplication where toPath = const "/" instance ToQuery CreatePlatformApplication where toQuery CreatePlatformApplication'{..} = mconcat ["Action" =: ("CreatePlatformApplication" :: ByteString), "Version" =: ("2010-03-31" :: ByteString), "Name" =: _cpaName, "Platform" =: _cpaPlatform, "Attributes" =: toQueryMap "entry" "key" "value" _cpaAttributes] -- | Response from CreatePlatformApplication action. -- -- /See:/ 'createPlatformApplicationResponse' smart constructor. data CreatePlatformApplicationResponse = CreatePlatformApplicationResponse' { _cparsPlatformApplicationARN :: !(Maybe Text) , _cparsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CreatePlatformApplicationResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cparsPlatformApplicationARN' -- -- * 'cparsResponseStatus' createPlatformApplicationResponse :: Int -- ^ 'cparsResponseStatus' -> CreatePlatformApplicationResponse createPlatformApplicationResponse pResponseStatus_ = CreatePlatformApplicationResponse' { _cparsPlatformApplicationARN = Nothing , _cparsResponseStatus = pResponseStatus_ } -- | PlatformApplicationArn is returned. cparsPlatformApplicationARN :: Lens' CreatePlatformApplicationResponse (Maybe Text) cparsPlatformApplicationARN = lens _cparsPlatformApplicationARN (\ s a -> s{_cparsPlatformApplicationARN = a}); -- | The response status code. cparsResponseStatus :: Lens' CreatePlatformApplicationResponse Int cparsResponseStatus = lens _cparsResponseStatus (\ s a -> s{_cparsResponseStatus = a});