amazonka-gamelift-1.4.0: gen/Network/AWS/GameLift/CreateBuild.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.GameLift.CreateBuild
-- 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)
--
-- Initializes a new build record and generates information required to
-- upload a game build to Amazon GameLift. Once the build record has been
-- created and is in an INITIALIZED state, you can upload your game build.
--
-- To create a build, use the CLI command 'upload-build', which creates a
-- new build record and uploads the build files in one step. (See the
-- <http://docs.aws.amazon.com/gamelift/latest/developerguide/ Amazon GameLift Developer Guide>
-- for more details on the CLI and the upload process.) Call the
-- 'CreateBuild' action only if you have your own Amazon Simple Storage
-- Service (Amazon S3) client and need to manually upload your build files.
--
-- To create a new build, optionally specify a build name and version. This
-- metadata is stored with other properties in the build record and is
-- displayed in the GameLift console (but not visible to players). If
-- successful, this action returns the newly created build record along
-- with an Amazon S3 storage location and AWS account credentials. Use the
-- location and credentials to upload your game build.
module Network.AWS.GameLift.CreateBuild
(
-- * Creating a Request
createBuild
, CreateBuild
-- * Request Lenses
, cbStorageLocation
, cbName
, cbVersion
-- * Destructuring the Response
, createBuildResponse
, CreateBuildResponse
-- * Response Lenses
, cbrsStorageLocation
, cbrsUploadCredentials
, cbrsBuild
, cbrsResponseStatus
) where
import Network.AWS.GameLift.Types
import Network.AWS.GameLift.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | Represents the input for a request action.
--
-- /See:/ 'createBuild' smart constructor.
data CreateBuild = CreateBuild'
{ _cbStorageLocation :: !(Maybe S3Location)
, _cbName :: !(Maybe Text)
, _cbVersion :: !(Maybe Text)
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'CreateBuild' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cbStorageLocation'
--
-- * 'cbName'
--
-- * 'cbVersion'
createBuild
:: CreateBuild
createBuild =
CreateBuild'
{ _cbStorageLocation = Nothing
, _cbName = Nothing
, _cbVersion = Nothing
}
-- | Undocumented member.
cbStorageLocation :: Lens' CreateBuild (Maybe S3Location)
cbStorageLocation = lens _cbStorageLocation (\ s a -> s{_cbStorageLocation = a});
-- | Descriptive label associated with this build. Build names do not need to
-- be unique. A build name can be changed later using < UpdateBuild>.
cbName :: Lens' CreateBuild (Maybe Text)
cbName = lens _cbName (\ s a -> s{_cbName = a});
-- | Version associated with this build. Version strings do not need to be
-- unique to a build. A build version can be changed later using
-- < UpdateBuild>.
cbVersion :: Lens' CreateBuild (Maybe Text)
cbVersion = lens _cbVersion (\ s a -> s{_cbVersion = a});
instance AWSRequest CreateBuild where
type Rs CreateBuild = CreateBuildResponse
request = postJSON gameLift
response
= receiveJSON
(\ s h x ->
CreateBuildResponse' <$>
(x .?> "StorageLocation") <*>
(x .?> "UploadCredentials")
<*> (x .?> "Build")
<*> (pure (fromEnum s)))
instance Hashable CreateBuild
instance ToHeaders CreateBuild where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("GameLift.CreateBuild" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateBuild where
toJSON CreateBuild'{..}
= object
(catMaybes
[("StorageLocation" .=) <$> _cbStorageLocation,
("Name" .=) <$> _cbName,
("Version" .=) <$> _cbVersion])
instance ToPath CreateBuild where
toPath = const "/"
instance ToQuery CreateBuild where
toQuery = const mempty
-- | Represents the returned data in response to a request action.
--
-- /See:/ 'createBuildResponse' smart constructor.
data CreateBuildResponse = CreateBuildResponse'
{ _cbrsStorageLocation :: !(Maybe S3Location)
, _cbrsUploadCredentials :: !(Maybe (Sensitive AWSCredentials))
, _cbrsBuild :: !(Maybe Build)
, _cbrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'CreateBuildResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cbrsStorageLocation'
--
-- * 'cbrsUploadCredentials'
--
-- * 'cbrsBuild'
--
-- * 'cbrsResponseStatus'
createBuildResponse
:: Int -- ^ 'cbrsResponseStatus'
-> CreateBuildResponse
createBuildResponse pResponseStatus_ =
CreateBuildResponse'
{ _cbrsStorageLocation = Nothing
, _cbrsUploadCredentials = Nothing
, _cbrsBuild = Nothing
, _cbrsResponseStatus = pResponseStatus_
}
-- | Amazon S3 path and key, identifying where the game build files are
-- stored.
cbrsStorageLocation :: Lens' CreateBuildResponse (Maybe S3Location)
cbrsStorageLocation = lens _cbrsStorageLocation (\ s a -> s{_cbrsStorageLocation = a});
-- | AWS credentials required when uploading a game build to the storage
-- location. These credentials have a limited lifespan and are valid only
-- for the build they were issued for. If you need to get fresh
-- credentials, call < RequestUploadCredentials>.
cbrsUploadCredentials :: Lens' CreateBuildResponse (Maybe AWSCredentials)
cbrsUploadCredentials = lens _cbrsUploadCredentials (\ s a -> s{_cbrsUploadCredentials = a}) . mapping _Sensitive;
-- | Set of properties for the newly created build.
cbrsBuild :: Lens' CreateBuildResponse (Maybe Build)
cbrsBuild = lens _cbrsBuild (\ s a -> s{_cbrsBuild = a});
-- | The response status code.
cbrsResponseStatus :: Lens' CreateBuildResponse Int
cbrsResponseStatus = lens _cbrsResponseStatus (\ s a -> s{_cbrsResponseStatus = a});