{-# 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 NFData 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}); instance NFData CreatePlatformApplicationResponse