amazonka-appsync-1.6.0: gen/Network/AWS/AppSync/CreateResolver.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.AppSync.CreateResolver
-- Copyright : (c) 2013-2018 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a @Resolver@ object.
--
--
-- A resolver converts incoming requests into a format that a data source can understand and converts the data source's responses into GraphQL.
--
module Network.AWS.AppSync.CreateResolver
(
-- * Creating a Request
createResolver
, CreateResolver
-- * Request Lenses
, crResponseMappingTemplate
, crApiId
, crTypeName
, crFieldName
, crDataSourceName
, crRequestMappingTemplate
-- * Destructuring the Response
, createResolverResponse
, CreateResolverResponse
-- * Response Lenses
, crrsResolver
, crrsResponseStatus
) where
import Network.AWS.AppSync.Types
import Network.AWS.AppSync.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'createResolver' smart constructor.
data CreateResolver = CreateResolver'
{ _crResponseMappingTemplate :: !(Maybe Text)
, _crApiId :: !Text
, _crTypeName :: !Text
, _crFieldName :: !Text
, _crDataSourceName :: !Text
, _crRequestMappingTemplate :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateResolver' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'crResponseMappingTemplate' - The mapping template to be used for responses from the data source.
--
-- * 'crApiId' - The ID for the GraphQL API for which the resolver is being created.
--
-- * 'crTypeName' - The name of the @Type@ .
--
-- * 'crFieldName' - The name of the field to attach the resolver to.
--
-- * 'crDataSourceName' - The name of the data source for which the resolver is being created.
--
-- * 'crRequestMappingTemplate' - The mapping template to be used for requests. A resolver uses a request mapping template to convert a GraphQL expression into a format that a data source can understand. Mapping templates are written in Apache Velocity Template Language (VTL).
createResolver
:: Text -- ^ 'crApiId'
-> Text -- ^ 'crTypeName'
-> Text -- ^ 'crFieldName'
-> Text -- ^ 'crDataSourceName'
-> Text -- ^ 'crRequestMappingTemplate'
-> CreateResolver
createResolver pApiId_ pTypeName_ pFieldName_ pDataSourceName_ pRequestMappingTemplate_ =
CreateResolver'
{ _crResponseMappingTemplate = Nothing
, _crApiId = pApiId_
, _crTypeName = pTypeName_
, _crFieldName = pFieldName_
, _crDataSourceName = pDataSourceName_
, _crRequestMappingTemplate = pRequestMappingTemplate_
}
-- | The mapping template to be used for responses from the data source.
crResponseMappingTemplate :: Lens' CreateResolver (Maybe Text)
crResponseMappingTemplate = lens _crResponseMappingTemplate (\ s a -> s{_crResponseMappingTemplate = a})
-- | The ID for the GraphQL API for which the resolver is being created.
crApiId :: Lens' CreateResolver Text
crApiId = lens _crApiId (\ s a -> s{_crApiId = a})
-- | The name of the @Type@ .
crTypeName :: Lens' CreateResolver Text
crTypeName = lens _crTypeName (\ s a -> s{_crTypeName = a})
-- | The name of the field to attach the resolver to.
crFieldName :: Lens' CreateResolver Text
crFieldName = lens _crFieldName (\ s a -> s{_crFieldName = a})
-- | The name of the data source for which the resolver is being created.
crDataSourceName :: Lens' CreateResolver Text
crDataSourceName = lens _crDataSourceName (\ s a -> s{_crDataSourceName = a})
-- | The mapping template to be used for requests. A resolver uses a request mapping template to convert a GraphQL expression into a format that a data source can understand. Mapping templates are written in Apache Velocity Template Language (VTL).
crRequestMappingTemplate :: Lens' CreateResolver Text
crRequestMappingTemplate = lens _crRequestMappingTemplate (\ s a -> s{_crRequestMappingTemplate = a})
instance AWSRequest CreateResolver where
type Rs CreateResolver = CreateResolverResponse
request = postJSON appSync
response
= receiveJSON
(\ s h x ->
CreateResolverResponse' <$>
(x .?> "resolver") <*> (pure (fromEnum s)))
instance Hashable CreateResolver where
instance NFData CreateResolver where
instance ToHeaders CreateResolver where
toHeaders
= const
(mconcat
["Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateResolver where
toJSON CreateResolver'{..}
= object
(catMaybes
[("responseMappingTemplate" .=) <$>
_crResponseMappingTemplate,
Just ("fieldName" .= _crFieldName),
Just ("dataSourceName" .= _crDataSourceName),
Just
("requestMappingTemplate" .=
_crRequestMappingTemplate)])
instance ToPath CreateResolver where
toPath CreateResolver'{..}
= mconcat
["/v1/apis/", toBS _crApiId, "/types/",
toBS _crTypeName, "/resolvers"]
instance ToQuery CreateResolver where
toQuery = const mempty
-- | /See:/ 'createResolverResponse' smart constructor.
data CreateResolverResponse = CreateResolverResponse'
{ _crrsResolver :: !(Maybe Resolver)
, _crrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateResolverResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'crrsResolver' - The @Resolver@ object.
--
-- * 'crrsResponseStatus' - -- | The response status code.
createResolverResponse
:: Int -- ^ 'crrsResponseStatus'
-> CreateResolverResponse
createResolverResponse pResponseStatus_ =
CreateResolverResponse'
{_crrsResolver = Nothing, _crrsResponseStatus = pResponseStatus_}
-- | The @Resolver@ object.
crrsResolver :: Lens' CreateResolverResponse (Maybe Resolver)
crrsResolver = lens _crrsResolver (\ s a -> s{_crrsResolver = a})
-- | -- | The response status code.
crrsResponseStatus :: Lens' CreateResolverResponse Int
crrsResponseStatus = lens _crrsResponseStatus (\ s a -> s{_crrsResponseStatus = a})
instance NFData CreateResolverResponse where