{-# 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 #-}
module Network.AWS.APIGateway.CreateRestAPI
(
createRestAPI
, CreateRestAPI
, craMinimumCompressionSize
, craBinaryMediaTypes
, craVersion
, craApiKeySource
, craCloneFrom
, craPolicy
, craEndpointConfiguration
, craDescription
, craName
, restAPI
, RestAPI
, raMinimumCompressionSize
, raBinaryMediaTypes
, raWarnings
, raCreatedDate
, raName
, raVersion
, raApiKeySource
, raId
, raPolicy
, raEndpointConfiguration
, raDescription
) where
import Network.AWS.APIGateway.Types
import Network.AWS.APIGateway.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateRestAPI = CreateRestAPI'
{ _craMinimumCompressionSize :: !(Maybe Int)
, _craBinaryMediaTypes :: !(Maybe [Text])
, _craVersion :: !(Maybe Text)
, _craApiKeySource :: !(Maybe APIKeySourceType)
, _craCloneFrom :: !(Maybe Text)
, _craPolicy :: !(Maybe Text)
, _craEndpointConfiguration :: !(Maybe EndpointConfiguration)
, _craDescription :: !(Maybe Text)
, _craName :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createRestAPI
:: Text
-> CreateRestAPI
createRestAPI pName_ =
CreateRestAPI'
{ _craMinimumCompressionSize = Nothing
, _craBinaryMediaTypes = Nothing
, _craVersion = Nothing
, _craApiKeySource = Nothing
, _craCloneFrom = Nothing
, _craPolicy = Nothing
, _craEndpointConfiguration = Nothing
, _craDescription = Nothing
, _craName = pName_
}
craMinimumCompressionSize :: Lens' CreateRestAPI (Maybe Int)
craMinimumCompressionSize = lens _craMinimumCompressionSize (\ s a -> s{_craMinimumCompressionSize = a})
craBinaryMediaTypes :: Lens' CreateRestAPI [Text]
craBinaryMediaTypes = lens _craBinaryMediaTypes (\ s a -> s{_craBinaryMediaTypes = a}) . _Default . _Coerce
craVersion :: Lens' CreateRestAPI (Maybe Text)
craVersion = lens _craVersion (\ s a -> s{_craVersion = a})
craApiKeySource :: Lens' CreateRestAPI (Maybe APIKeySourceType)
craApiKeySource = lens _craApiKeySource (\ s a -> s{_craApiKeySource = a})
craCloneFrom :: Lens' CreateRestAPI (Maybe Text)
craCloneFrom = lens _craCloneFrom (\ s a -> s{_craCloneFrom = a})
craPolicy :: Lens' CreateRestAPI (Maybe Text)
craPolicy = lens _craPolicy (\ s a -> s{_craPolicy = a})
craEndpointConfiguration :: Lens' CreateRestAPI (Maybe EndpointConfiguration)
craEndpointConfiguration = lens _craEndpointConfiguration (\ s a -> s{_craEndpointConfiguration = a})
craDescription :: Lens' CreateRestAPI (Maybe Text)
craDescription = lens _craDescription (\ s a -> s{_craDescription = a})
craName :: Lens' CreateRestAPI Text
craName = lens _craName (\ s a -> s{_craName = a})
instance AWSRequest CreateRestAPI where
type Rs CreateRestAPI = RestAPI
request = postJSON apiGateway
response = receiveJSON (\ s h x -> eitherParseJSON x)
instance Hashable CreateRestAPI where
instance NFData CreateRestAPI where
instance ToHeaders CreateRestAPI where
toHeaders
= const
(mconcat
["Accept" =# ("application/json" :: ByteString)])
instance ToJSON CreateRestAPI where
toJSON CreateRestAPI'{..}
= object
(catMaybes
[("minimumCompressionSize" .=) <$>
_craMinimumCompressionSize,
("binaryMediaTypes" .=) <$> _craBinaryMediaTypes,
("version" .=) <$> _craVersion,
("apiKeySource" .=) <$> _craApiKeySource,
("cloneFrom" .=) <$> _craCloneFrom,
("policy" .=) <$> _craPolicy,
("endpointConfiguration" .=) <$>
_craEndpointConfiguration,
("description" .=) <$> _craDescription,
Just ("name" .= _craName)])
instance ToPath CreateRestAPI where
toPath = const "/restapis"
instance ToQuery CreateRestAPI where
toQuery = const mempty