amazonka-apigateway-1.4.0: gen/Network/AWS/APIGateway/CreateBasePathMapping.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.APIGateway.CreateBasePathMapping
-- 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)
--
-- Creates a new < BasePathMapping> resource.
module Network.AWS.APIGateway.CreateBasePathMapping
(
-- * Creating a Request
createBasePathMapping
, CreateBasePathMapping
-- * Request Lenses
, cbpmStage
, cbpmBasePath
, cbpmDomainName
, cbpmRestAPIId
-- * Destructuring the Response
, basePathMapping
, BasePathMapping
-- * Response Lenses
, bpmStage
, bpmBasePath
, bpmRestAPIId
) 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
-- | Requests Amazon API Gateway to create a new < BasePathMapping> resource.
--
-- /See:/ 'createBasePathMapping' smart constructor.
data CreateBasePathMapping = CreateBasePathMapping'
{ _cbpmStage :: !(Maybe Text)
, _cbpmBasePath :: !(Maybe Text)
, _cbpmDomainName :: !Text
, _cbpmRestAPIId :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'CreateBasePathMapping' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cbpmStage'
--
-- * 'cbpmBasePath'
--
-- * 'cbpmDomainName'
--
-- * 'cbpmRestAPIId'
createBasePathMapping
:: Text -- ^ 'cbpmDomainName'
-> Text -- ^ 'cbpmRestAPIId'
-> CreateBasePathMapping
createBasePathMapping pDomainName_ pRestAPIId_ =
CreateBasePathMapping'
{ _cbpmStage = Nothing
, _cbpmBasePath = Nothing
, _cbpmDomainName = pDomainName_
, _cbpmRestAPIId = pRestAPIId_
}
-- | The name of the API\'s stage that you want to use for this mapping.
-- Leave this blank if you do not want callers to explicitly specify the
-- stage name after any base path name.
cbpmStage :: Lens' CreateBasePathMapping (Maybe Text)
cbpmStage = lens _cbpmStage (\ s a -> s{_cbpmStage = a});
-- | The base path name that callers of the API must provide as part of the
-- URL after the domain name. This value must be unique for all of the
-- mappings across a single API. Leave this blank if you do not want
-- callers to specify a base path name after the domain name.
cbpmBasePath :: Lens' CreateBasePathMapping (Maybe Text)
cbpmBasePath = lens _cbpmBasePath (\ s a -> s{_cbpmBasePath = a});
-- | The domain name of the < BasePathMapping> resource to create.
cbpmDomainName :: Lens' CreateBasePathMapping Text
cbpmDomainName = lens _cbpmDomainName (\ s a -> s{_cbpmDomainName = a});
-- | The name of the API that you want to apply this mapping to.
cbpmRestAPIId :: Lens' CreateBasePathMapping Text
cbpmRestAPIId = lens _cbpmRestAPIId (\ s a -> s{_cbpmRestAPIId = a});
instance AWSRequest CreateBasePathMapping where
type Rs CreateBasePathMapping = BasePathMapping
request = postJSON apiGateway
response = receiveJSON (\ s h x -> eitherParseJSON x)
instance Hashable CreateBasePathMapping
instance ToHeaders CreateBasePathMapping where
toHeaders
= const
(mconcat
["Accept" =# ("application/json" :: ByteString)])
instance ToJSON CreateBasePathMapping where
toJSON CreateBasePathMapping'{..}
= object
(catMaybes
[("stage" .=) <$> _cbpmStage,
("basePath" .=) <$> _cbpmBasePath,
Just ("restApiId" .= _cbpmRestAPIId)])
instance ToPath CreateBasePathMapping where
toPath CreateBasePathMapping'{..}
= mconcat
["/domainnames/", toBS _cbpmDomainName,
"/basepathmappings"]
instance ToQuery CreateBasePathMapping where
toQuery = const mempty