{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.AmplifyUiBuilder.PutMetadataFlag
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Stores the metadata information about a feature on a form or view.
module Amazonka.AmplifyUiBuilder.PutMetadataFlag
  ( -- * Creating a Request
    PutMetadataFlag (..),
    newPutMetadataFlag,

    -- * Request Lenses
    putMetadataFlag_appId,
    putMetadataFlag_body,
    putMetadataFlag_environmentName,
    putMetadataFlag_featureName,

    -- * Destructuring the Response
    PutMetadataFlagResponse (..),
    newPutMetadataFlagResponse,
  )
where

import Amazonka.AmplifyUiBuilder.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newPutMetadataFlag' smart constructor.
data PutMetadataFlag = PutMetadataFlag'
  { -- | The unique ID for the Amplify app.
    PutMetadataFlag -> Text
appId :: Prelude.Text,
    -- | The metadata information to store.
    PutMetadataFlag -> PutMetadataFlagBody
body :: PutMetadataFlagBody,
    -- | The name of the backend environment that is part of the Amplify app.
    PutMetadataFlag -> Text
environmentName :: Prelude.Text,
    -- | The name of the feature associated with the metadata.
    PutMetadataFlag -> Text
featureName :: Prelude.Text
  }
  deriving (PutMetadataFlag -> PutMetadataFlag -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PutMetadataFlag -> PutMetadataFlag -> Bool
$c/= :: PutMetadataFlag -> PutMetadataFlag -> Bool
== :: PutMetadataFlag -> PutMetadataFlag -> Bool
$c== :: PutMetadataFlag -> PutMetadataFlag -> Bool
Prelude.Eq, ReadPrec [PutMetadataFlag]
ReadPrec PutMetadataFlag
Int -> ReadS PutMetadataFlag
ReadS [PutMetadataFlag]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PutMetadataFlag]
$creadListPrec :: ReadPrec [PutMetadataFlag]
readPrec :: ReadPrec PutMetadataFlag
$creadPrec :: ReadPrec PutMetadataFlag
readList :: ReadS [PutMetadataFlag]
$creadList :: ReadS [PutMetadataFlag]
readsPrec :: Int -> ReadS PutMetadataFlag
$creadsPrec :: Int -> ReadS PutMetadataFlag
Prelude.Read, Int -> PutMetadataFlag -> ShowS
[PutMetadataFlag] -> ShowS
PutMetadataFlag -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PutMetadataFlag] -> ShowS
$cshowList :: [PutMetadataFlag] -> ShowS
show :: PutMetadataFlag -> String
$cshow :: PutMetadataFlag -> String
showsPrec :: Int -> PutMetadataFlag -> ShowS
$cshowsPrec :: Int -> PutMetadataFlag -> ShowS
Prelude.Show, forall x. Rep PutMetadataFlag x -> PutMetadataFlag
forall x. PutMetadataFlag -> Rep PutMetadataFlag x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PutMetadataFlag x -> PutMetadataFlag
$cfrom :: forall x. PutMetadataFlag -> Rep PutMetadataFlag x
Prelude.Generic)

-- |
-- Create a value of 'PutMetadataFlag' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'appId', 'putMetadataFlag_appId' - The unique ID for the Amplify app.
--
-- 'body', 'putMetadataFlag_body' - The metadata information to store.
--
-- 'environmentName', 'putMetadataFlag_environmentName' - The name of the backend environment that is part of the Amplify app.
--
-- 'featureName', 'putMetadataFlag_featureName' - The name of the feature associated with the metadata.
newPutMetadataFlag ::
  -- | 'appId'
  Prelude.Text ->
  -- | 'body'
  PutMetadataFlagBody ->
  -- | 'environmentName'
  Prelude.Text ->
  -- | 'featureName'
  Prelude.Text ->
  PutMetadataFlag
newPutMetadataFlag :: Text -> PutMetadataFlagBody -> Text -> Text -> PutMetadataFlag
newPutMetadataFlag
  Text
pAppId_
  PutMetadataFlagBody
pBody_
  Text
pEnvironmentName_
  Text
pFeatureName_ =
    PutMetadataFlag'
      { $sel:appId:PutMetadataFlag' :: Text
appId = Text
pAppId_,
        $sel:body:PutMetadataFlag' :: PutMetadataFlagBody
body = PutMetadataFlagBody
pBody_,
        $sel:environmentName:PutMetadataFlag' :: Text
environmentName = Text
pEnvironmentName_,
        $sel:featureName:PutMetadataFlag' :: Text
featureName = Text
pFeatureName_
      }

-- | The unique ID for the Amplify app.
putMetadataFlag_appId :: Lens.Lens' PutMetadataFlag Prelude.Text
putMetadataFlag_appId :: Lens' PutMetadataFlag Text
putMetadataFlag_appId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutMetadataFlag' {Text
appId :: Text
$sel:appId:PutMetadataFlag' :: PutMetadataFlag -> Text
appId} -> Text
appId) (\s :: PutMetadataFlag
s@PutMetadataFlag' {} Text
a -> PutMetadataFlag
s {$sel:appId:PutMetadataFlag' :: Text
appId = Text
a} :: PutMetadataFlag)

-- | The metadata information to store.
putMetadataFlag_body :: Lens.Lens' PutMetadataFlag PutMetadataFlagBody
putMetadataFlag_body :: Lens' PutMetadataFlag PutMetadataFlagBody
putMetadataFlag_body = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutMetadataFlag' {PutMetadataFlagBody
body :: PutMetadataFlagBody
$sel:body:PutMetadataFlag' :: PutMetadataFlag -> PutMetadataFlagBody
body} -> PutMetadataFlagBody
body) (\s :: PutMetadataFlag
s@PutMetadataFlag' {} PutMetadataFlagBody
a -> PutMetadataFlag
s {$sel:body:PutMetadataFlag' :: PutMetadataFlagBody
body = PutMetadataFlagBody
a} :: PutMetadataFlag)

-- | The name of the backend environment that is part of the Amplify app.
putMetadataFlag_environmentName :: Lens.Lens' PutMetadataFlag Prelude.Text
putMetadataFlag_environmentName :: Lens' PutMetadataFlag Text
putMetadataFlag_environmentName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutMetadataFlag' {Text
environmentName :: Text
$sel:environmentName:PutMetadataFlag' :: PutMetadataFlag -> Text
environmentName} -> Text
environmentName) (\s :: PutMetadataFlag
s@PutMetadataFlag' {} Text
a -> PutMetadataFlag
s {$sel:environmentName:PutMetadataFlag' :: Text
environmentName = Text
a} :: PutMetadataFlag)

-- | The name of the feature associated with the metadata.
putMetadataFlag_featureName :: Lens.Lens' PutMetadataFlag Prelude.Text
putMetadataFlag_featureName :: Lens' PutMetadataFlag Text
putMetadataFlag_featureName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutMetadataFlag' {Text
featureName :: Text
$sel:featureName:PutMetadataFlag' :: PutMetadataFlag -> Text
featureName} -> Text
featureName) (\s :: PutMetadataFlag
s@PutMetadataFlag' {} Text
a -> PutMetadataFlag
s {$sel:featureName:PutMetadataFlag' :: Text
featureName = Text
a} :: PutMetadataFlag)

instance Core.AWSRequest PutMetadataFlag where
  type
    AWSResponse PutMetadataFlag =
      PutMetadataFlagResponse
  request :: (Service -> Service) -> PutMetadataFlag -> Request PutMetadataFlag
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.putJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy PutMetadataFlag
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse PutMetadataFlag)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull PutMetadataFlagResponse
PutMetadataFlagResponse'

instance Prelude.Hashable PutMetadataFlag where
  hashWithSalt :: Int -> PutMetadataFlag -> Int
hashWithSalt Int
_salt PutMetadataFlag' {Text
PutMetadataFlagBody
featureName :: Text
environmentName :: Text
body :: PutMetadataFlagBody
appId :: Text
$sel:featureName:PutMetadataFlag' :: PutMetadataFlag -> Text
$sel:environmentName:PutMetadataFlag' :: PutMetadataFlag -> Text
$sel:body:PutMetadataFlag' :: PutMetadataFlag -> PutMetadataFlagBody
$sel:appId:PutMetadataFlag' :: PutMetadataFlag -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
appId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` PutMetadataFlagBody
body
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
environmentName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
featureName

instance Prelude.NFData PutMetadataFlag where
  rnf :: PutMetadataFlag -> ()
rnf PutMetadataFlag' {Text
PutMetadataFlagBody
featureName :: Text
environmentName :: Text
body :: PutMetadataFlagBody
appId :: Text
$sel:featureName:PutMetadataFlag' :: PutMetadataFlag -> Text
$sel:environmentName:PutMetadataFlag' :: PutMetadataFlag -> Text
$sel:body:PutMetadataFlag' :: PutMetadataFlag -> PutMetadataFlagBody
$sel:appId:PutMetadataFlag' :: PutMetadataFlag -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
appId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf PutMetadataFlagBody
body
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
environmentName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
featureName

instance Data.ToHeaders PutMetadataFlag where
  toHeaders :: PutMetadataFlag -> [Header]
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON PutMetadataFlag where
  toJSON :: PutMetadataFlag -> Value
toJSON PutMetadataFlag' {Text
PutMetadataFlagBody
featureName :: Text
environmentName :: Text
body :: PutMetadataFlagBody
appId :: Text
$sel:featureName:PutMetadataFlag' :: PutMetadataFlag -> Text
$sel:environmentName:PutMetadataFlag' :: PutMetadataFlag -> Text
$sel:body:PutMetadataFlag' :: PutMetadataFlag -> PutMetadataFlagBody
$sel:appId:PutMetadataFlag' :: PutMetadataFlag -> Text
..} = forall a. ToJSON a => a -> Value
Data.toJSON PutMetadataFlagBody
body

instance Data.ToPath PutMetadataFlag where
  toPath :: PutMetadataFlag -> ByteString
toPath PutMetadataFlag' {Text
PutMetadataFlagBody
featureName :: Text
environmentName :: Text
body :: PutMetadataFlagBody
appId :: Text
$sel:featureName:PutMetadataFlag' :: PutMetadataFlag -> Text
$sel:environmentName:PutMetadataFlag' :: PutMetadataFlag -> Text
$sel:body:PutMetadataFlag' :: PutMetadataFlag -> PutMetadataFlagBody
$sel:appId:PutMetadataFlag' :: PutMetadataFlag -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/app/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
appId,
        ByteString
"/environment/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
environmentName,
        ByteString
"/metadata/features/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
featureName
      ]

instance Data.ToQuery PutMetadataFlag where
  toQuery :: PutMetadataFlag -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newPutMetadataFlagResponse' smart constructor.
data PutMetadataFlagResponse = PutMetadataFlagResponse'
  {
  }
  deriving (PutMetadataFlagResponse -> PutMetadataFlagResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PutMetadataFlagResponse -> PutMetadataFlagResponse -> Bool
$c/= :: PutMetadataFlagResponse -> PutMetadataFlagResponse -> Bool
== :: PutMetadataFlagResponse -> PutMetadataFlagResponse -> Bool
$c== :: PutMetadataFlagResponse -> PutMetadataFlagResponse -> Bool
Prelude.Eq, ReadPrec [PutMetadataFlagResponse]
ReadPrec PutMetadataFlagResponse
Int -> ReadS PutMetadataFlagResponse
ReadS [PutMetadataFlagResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PutMetadataFlagResponse]
$creadListPrec :: ReadPrec [PutMetadataFlagResponse]
readPrec :: ReadPrec PutMetadataFlagResponse
$creadPrec :: ReadPrec PutMetadataFlagResponse
readList :: ReadS [PutMetadataFlagResponse]
$creadList :: ReadS [PutMetadataFlagResponse]
readsPrec :: Int -> ReadS PutMetadataFlagResponse
$creadsPrec :: Int -> ReadS PutMetadataFlagResponse
Prelude.Read, Int -> PutMetadataFlagResponse -> ShowS
[PutMetadataFlagResponse] -> ShowS
PutMetadataFlagResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PutMetadataFlagResponse] -> ShowS
$cshowList :: [PutMetadataFlagResponse] -> ShowS
show :: PutMetadataFlagResponse -> String
$cshow :: PutMetadataFlagResponse -> String
showsPrec :: Int -> PutMetadataFlagResponse -> ShowS
$cshowsPrec :: Int -> PutMetadataFlagResponse -> ShowS
Prelude.Show, forall x. Rep PutMetadataFlagResponse x -> PutMetadataFlagResponse
forall x. PutMetadataFlagResponse -> Rep PutMetadataFlagResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PutMetadataFlagResponse x -> PutMetadataFlagResponse
$cfrom :: forall x. PutMetadataFlagResponse -> Rep PutMetadataFlagResponse x
Prelude.Generic)

-- |
-- Create a value of 'PutMetadataFlagResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
newPutMetadataFlagResponse ::
  PutMetadataFlagResponse
newPutMetadataFlagResponse :: PutMetadataFlagResponse
newPutMetadataFlagResponse = PutMetadataFlagResponse
PutMetadataFlagResponse'

instance Prelude.NFData PutMetadataFlagResponse where
  rnf :: PutMetadataFlagResponse -> ()
rnf PutMetadataFlagResponse
_ = ()