{-# 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.Amplify.UpdateDomainAssociation
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a new domain association for an Amplify app.
module Amazonka.Amplify.UpdateDomainAssociation
  ( -- * Creating a Request
    UpdateDomainAssociation (..),
    newUpdateDomainAssociation,

    -- * Request Lenses
    updateDomainAssociation_autoSubDomainCreationPatterns,
    updateDomainAssociation_autoSubDomainIAMRole,
    updateDomainAssociation_enableAutoSubDomain,
    updateDomainAssociation_subDomainSettings,
    updateDomainAssociation_appId,
    updateDomainAssociation_domainName,

    -- * Destructuring the Response
    UpdateDomainAssociationResponse (..),
    newUpdateDomainAssociationResponse,

    -- * Response Lenses
    updateDomainAssociationResponse_httpStatus,
    updateDomainAssociationResponse_domainAssociation,
  )
where

import Amazonka.Amplify.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

-- | The request structure for the update domain association request.
--
-- /See:/ 'newUpdateDomainAssociation' smart constructor.
data UpdateDomainAssociation = UpdateDomainAssociation'
  { -- | Sets the branch patterns for automatic subdomain creation.
    UpdateDomainAssociation -> Maybe [Text]
autoSubDomainCreationPatterns :: Prelude.Maybe [Prelude.Text],
    -- | The required AWS Identity and Access Management (IAM) service role for
    -- the Amazon Resource Name (ARN) for automatically creating subdomains.
    UpdateDomainAssociation -> Maybe Text
autoSubDomainIAMRole :: Prelude.Maybe Prelude.Text,
    -- | Enables the automated creation of subdomains for branches.
    UpdateDomainAssociation -> Maybe Bool
enableAutoSubDomain :: Prelude.Maybe Prelude.Bool,
    -- | Describes the settings for the subdomain.
    UpdateDomainAssociation -> Maybe [SubDomainSetting]
subDomainSettings :: Prelude.Maybe [SubDomainSetting],
    -- | The unique ID for an Amplify app.
    UpdateDomainAssociation -> Text
appId :: Prelude.Text,
    -- | The name of the domain.
    UpdateDomainAssociation -> Text
domainName :: Prelude.Text
  }
  deriving (UpdateDomainAssociation -> UpdateDomainAssociation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateDomainAssociation -> UpdateDomainAssociation -> Bool
$c/= :: UpdateDomainAssociation -> UpdateDomainAssociation -> Bool
== :: UpdateDomainAssociation -> UpdateDomainAssociation -> Bool
$c== :: UpdateDomainAssociation -> UpdateDomainAssociation -> Bool
Prelude.Eq, ReadPrec [UpdateDomainAssociation]
ReadPrec UpdateDomainAssociation
Int -> ReadS UpdateDomainAssociation
ReadS [UpdateDomainAssociation]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateDomainAssociation]
$creadListPrec :: ReadPrec [UpdateDomainAssociation]
readPrec :: ReadPrec UpdateDomainAssociation
$creadPrec :: ReadPrec UpdateDomainAssociation
readList :: ReadS [UpdateDomainAssociation]
$creadList :: ReadS [UpdateDomainAssociation]
readsPrec :: Int -> ReadS UpdateDomainAssociation
$creadsPrec :: Int -> ReadS UpdateDomainAssociation
Prelude.Read, Int -> UpdateDomainAssociation -> ShowS
[UpdateDomainAssociation] -> ShowS
UpdateDomainAssociation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateDomainAssociation] -> ShowS
$cshowList :: [UpdateDomainAssociation] -> ShowS
show :: UpdateDomainAssociation -> String
$cshow :: UpdateDomainAssociation -> String
showsPrec :: Int -> UpdateDomainAssociation -> ShowS
$cshowsPrec :: Int -> UpdateDomainAssociation -> ShowS
Prelude.Show, forall x. Rep UpdateDomainAssociation x -> UpdateDomainAssociation
forall x. UpdateDomainAssociation -> Rep UpdateDomainAssociation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateDomainAssociation x -> UpdateDomainAssociation
$cfrom :: forall x. UpdateDomainAssociation -> Rep UpdateDomainAssociation x
Prelude.Generic)

-- |
-- Create a value of 'UpdateDomainAssociation' 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:
--
-- 'autoSubDomainCreationPatterns', 'updateDomainAssociation_autoSubDomainCreationPatterns' - Sets the branch patterns for automatic subdomain creation.
--
-- 'autoSubDomainIAMRole', 'updateDomainAssociation_autoSubDomainIAMRole' - The required AWS Identity and Access Management (IAM) service role for
-- the Amazon Resource Name (ARN) for automatically creating subdomains.
--
-- 'enableAutoSubDomain', 'updateDomainAssociation_enableAutoSubDomain' - Enables the automated creation of subdomains for branches.
--
-- 'subDomainSettings', 'updateDomainAssociation_subDomainSettings' - Describes the settings for the subdomain.
--
-- 'appId', 'updateDomainAssociation_appId' - The unique ID for an Amplify app.
--
-- 'domainName', 'updateDomainAssociation_domainName' - The name of the domain.
newUpdateDomainAssociation ::
  -- | 'appId'
  Prelude.Text ->
  -- | 'domainName'
  Prelude.Text ->
  UpdateDomainAssociation
newUpdateDomainAssociation :: Text -> Text -> UpdateDomainAssociation
newUpdateDomainAssociation Text
pAppId_ Text
pDomainName_ =
  UpdateDomainAssociation'
    { $sel:autoSubDomainCreationPatterns:UpdateDomainAssociation' :: Maybe [Text]
autoSubDomainCreationPatterns =
        forall a. Maybe a
Prelude.Nothing,
      $sel:autoSubDomainIAMRole:UpdateDomainAssociation' :: Maybe Text
autoSubDomainIAMRole = forall a. Maybe a
Prelude.Nothing,
      $sel:enableAutoSubDomain:UpdateDomainAssociation' :: Maybe Bool
enableAutoSubDomain = forall a. Maybe a
Prelude.Nothing,
      $sel:subDomainSettings:UpdateDomainAssociation' :: Maybe [SubDomainSetting]
subDomainSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:appId:UpdateDomainAssociation' :: Text
appId = Text
pAppId_,
      $sel:domainName:UpdateDomainAssociation' :: Text
domainName = Text
pDomainName_
    }

-- | Sets the branch patterns for automatic subdomain creation.
updateDomainAssociation_autoSubDomainCreationPatterns :: Lens.Lens' UpdateDomainAssociation (Prelude.Maybe [Prelude.Text])
updateDomainAssociation_autoSubDomainCreationPatterns :: Lens' UpdateDomainAssociation (Maybe [Text])
updateDomainAssociation_autoSubDomainCreationPatterns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainAssociation' {Maybe [Text]
autoSubDomainCreationPatterns :: Maybe [Text]
$sel:autoSubDomainCreationPatterns:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe [Text]
autoSubDomainCreationPatterns} -> Maybe [Text]
autoSubDomainCreationPatterns) (\s :: UpdateDomainAssociation
s@UpdateDomainAssociation' {} Maybe [Text]
a -> UpdateDomainAssociation
s {$sel:autoSubDomainCreationPatterns:UpdateDomainAssociation' :: Maybe [Text]
autoSubDomainCreationPatterns = Maybe [Text]
a} :: UpdateDomainAssociation) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The required AWS Identity and Access Management (IAM) service role for
-- the Amazon Resource Name (ARN) for automatically creating subdomains.
updateDomainAssociation_autoSubDomainIAMRole :: Lens.Lens' UpdateDomainAssociation (Prelude.Maybe Prelude.Text)
updateDomainAssociation_autoSubDomainIAMRole :: Lens' UpdateDomainAssociation (Maybe Text)
updateDomainAssociation_autoSubDomainIAMRole = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainAssociation' {Maybe Text
autoSubDomainIAMRole :: Maybe Text
$sel:autoSubDomainIAMRole:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe Text
autoSubDomainIAMRole} -> Maybe Text
autoSubDomainIAMRole) (\s :: UpdateDomainAssociation
s@UpdateDomainAssociation' {} Maybe Text
a -> UpdateDomainAssociation
s {$sel:autoSubDomainIAMRole:UpdateDomainAssociation' :: Maybe Text
autoSubDomainIAMRole = Maybe Text
a} :: UpdateDomainAssociation)

-- | Enables the automated creation of subdomains for branches.
updateDomainAssociation_enableAutoSubDomain :: Lens.Lens' UpdateDomainAssociation (Prelude.Maybe Prelude.Bool)
updateDomainAssociation_enableAutoSubDomain :: Lens' UpdateDomainAssociation (Maybe Bool)
updateDomainAssociation_enableAutoSubDomain = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainAssociation' {Maybe Bool
enableAutoSubDomain :: Maybe Bool
$sel:enableAutoSubDomain:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe Bool
enableAutoSubDomain} -> Maybe Bool
enableAutoSubDomain) (\s :: UpdateDomainAssociation
s@UpdateDomainAssociation' {} Maybe Bool
a -> UpdateDomainAssociation
s {$sel:enableAutoSubDomain:UpdateDomainAssociation' :: Maybe Bool
enableAutoSubDomain = Maybe Bool
a} :: UpdateDomainAssociation)

-- | Describes the settings for the subdomain.
updateDomainAssociation_subDomainSettings :: Lens.Lens' UpdateDomainAssociation (Prelude.Maybe [SubDomainSetting])
updateDomainAssociation_subDomainSettings :: Lens' UpdateDomainAssociation (Maybe [SubDomainSetting])
updateDomainAssociation_subDomainSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainAssociation' {Maybe [SubDomainSetting]
subDomainSettings :: Maybe [SubDomainSetting]
$sel:subDomainSettings:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe [SubDomainSetting]
subDomainSettings} -> Maybe [SubDomainSetting]
subDomainSettings) (\s :: UpdateDomainAssociation
s@UpdateDomainAssociation' {} Maybe [SubDomainSetting]
a -> UpdateDomainAssociation
s {$sel:subDomainSettings:UpdateDomainAssociation' :: Maybe [SubDomainSetting]
subDomainSettings = Maybe [SubDomainSetting]
a} :: UpdateDomainAssociation) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

-- | The name of the domain.
updateDomainAssociation_domainName :: Lens.Lens' UpdateDomainAssociation Prelude.Text
updateDomainAssociation_domainName :: Lens' UpdateDomainAssociation Text
updateDomainAssociation_domainName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainAssociation' {Text
domainName :: Text
$sel:domainName:UpdateDomainAssociation' :: UpdateDomainAssociation -> Text
domainName} -> Text
domainName) (\s :: UpdateDomainAssociation
s@UpdateDomainAssociation' {} Text
a -> UpdateDomainAssociation
s {$sel:domainName:UpdateDomainAssociation' :: Text
domainName = Text
a} :: UpdateDomainAssociation)

instance Core.AWSRequest UpdateDomainAssociation where
  type
    AWSResponse UpdateDomainAssociation =
      UpdateDomainAssociationResponse
  request :: (Service -> Service)
-> UpdateDomainAssociation -> Request UpdateDomainAssociation
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateDomainAssociation
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateDomainAssociation)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Int -> DomainAssociation -> UpdateDomainAssociationResponse
UpdateDomainAssociationResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"domainAssociation")
      )

instance Prelude.Hashable UpdateDomainAssociation where
  hashWithSalt :: Int -> UpdateDomainAssociation -> Int
hashWithSalt Int
_salt UpdateDomainAssociation' {Maybe Bool
Maybe [Text]
Maybe [SubDomainSetting]
Maybe Text
Text
domainName :: Text
appId :: Text
subDomainSettings :: Maybe [SubDomainSetting]
enableAutoSubDomain :: Maybe Bool
autoSubDomainIAMRole :: Maybe Text
autoSubDomainCreationPatterns :: Maybe [Text]
$sel:domainName:UpdateDomainAssociation' :: UpdateDomainAssociation -> Text
$sel:appId:UpdateDomainAssociation' :: UpdateDomainAssociation -> Text
$sel:subDomainSettings:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe [SubDomainSetting]
$sel:enableAutoSubDomain:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe Bool
$sel:autoSubDomainIAMRole:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe Text
$sel:autoSubDomainCreationPatterns:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
autoSubDomainCreationPatterns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
autoSubDomainIAMRole
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enableAutoSubDomain
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SubDomainSetting]
subDomainSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
appId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domainName

instance Prelude.NFData UpdateDomainAssociation where
  rnf :: UpdateDomainAssociation -> ()
rnf UpdateDomainAssociation' {Maybe Bool
Maybe [Text]
Maybe [SubDomainSetting]
Maybe Text
Text
domainName :: Text
appId :: Text
subDomainSettings :: Maybe [SubDomainSetting]
enableAutoSubDomain :: Maybe Bool
autoSubDomainIAMRole :: Maybe Text
autoSubDomainCreationPatterns :: Maybe [Text]
$sel:domainName:UpdateDomainAssociation' :: UpdateDomainAssociation -> Text
$sel:appId:UpdateDomainAssociation' :: UpdateDomainAssociation -> Text
$sel:subDomainSettings:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe [SubDomainSetting]
$sel:enableAutoSubDomain:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe Bool
$sel:autoSubDomainIAMRole:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe Text
$sel:autoSubDomainCreationPatterns:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
autoSubDomainCreationPatterns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
autoSubDomainIAMRole
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enableAutoSubDomain
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [SubDomainSetting]
subDomainSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Text
domainName

instance Data.ToHeaders UpdateDomainAssociation where
  toHeaders :: UpdateDomainAssociation -> ResponseHeaders
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 -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateDomainAssociation where
  toJSON :: UpdateDomainAssociation -> Value
toJSON UpdateDomainAssociation' {Maybe Bool
Maybe [Text]
Maybe [SubDomainSetting]
Maybe Text
Text
domainName :: Text
appId :: Text
subDomainSettings :: Maybe [SubDomainSetting]
enableAutoSubDomain :: Maybe Bool
autoSubDomainIAMRole :: Maybe Text
autoSubDomainCreationPatterns :: Maybe [Text]
$sel:domainName:UpdateDomainAssociation' :: UpdateDomainAssociation -> Text
$sel:appId:UpdateDomainAssociation' :: UpdateDomainAssociation -> Text
$sel:subDomainSettings:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe [SubDomainSetting]
$sel:enableAutoSubDomain:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe Bool
$sel:autoSubDomainIAMRole:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe Text
$sel:autoSubDomainCreationPatterns:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe [Text]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"autoSubDomainCreationPatterns" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
autoSubDomainCreationPatterns,
            (Key
"autoSubDomainIAMRole" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
autoSubDomainIAMRole,
            (Key
"enableAutoSubDomain" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
enableAutoSubDomain,
            (Key
"subDomainSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [SubDomainSetting]
subDomainSettings
          ]
      )

instance Data.ToPath UpdateDomainAssociation where
  toPath :: UpdateDomainAssociation -> ByteString
toPath UpdateDomainAssociation' {Maybe Bool
Maybe [Text]
Maybe [SubDomainSetting]
Maybe Text
Text
domainName :: Text
appId :: Text
subDomainSettings :: Maybe [SubDomainSetting]
enableAutoSubDomain :: Maybe Bool
autoSubDomainIAMRole :: Maybe Text
autoSubDomainCreationPatterns :: Maybe [Text]
$sel:domainName:UpdateDomainAssociation' :: UpdateDomainAssociation -> Text
$sel:appId:UpdateDomainAssociation' :: UpdateDomainAssociation -> Text
$sel:subDomainSettings:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe [SubDomainSetting]
$sel:enableAutoSubDomain:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe Bool
$sel:autoSubDomainIAMRole:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe Text
$sel:autoSubDomainCreationPatterns:UpdateDomainAssociation' :: UpdateDomainAssociation -> Maybe [Text]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/apps/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
appId,
        ByteString
"/domains/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
domainName
      ]

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

-- | The result structure for the update domain association request.
--
-- /See:/ 'newUpdateDomainAssociationResponse' smart constructor.
data UpdateDomainAssociationResponse = UpdateDomainAssociationResponse'
  { -- | The response's http status code.
    UpdateDomainAssociationResponse -> Int
httpStatus :: Prelude.Int,
    -- | Describes a domain association, which associates a custom domain with an
    -- Amplify app.
    UpdateDomainAssociationResponse -> DomainAssociation
domainAssociation :: DomainAssociation
  }
  deriving (UpdateDomainAssociationResponse
-> UpdateDomainAssociationResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateDomainAssociationResponse
-> UpdateDomainAssociationResponse -> Bool
$c/= :: UpdateDomainAssociationResponse
-> UpdateDomainAssociationResponse -> Bool
== :: UpdateDomainAssociationResponse
-> UpdateDomainAssociationResponse -> Bool
$c== :: UpdateDomainAssociationResponse
-> UpdateDomainAssociationResponse -> Bool
Prelude.Eq, ReadPrec [UpdateDomainAssociationResponse]
ReadPrec UpdateDomainAssociationResponse
Int -> ReadS UpdateDomainAssociationResponse
ReadS [UpdateDomainAssociationResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateDomainAssociationResponse]
$creadListPrec :: ReadPrec [UpdateDomainAssociationResponse]
readPrec :: ReadPrec UpdateDomainAssociationResponse
$creadPrec :: ReadPrec UpdateDomainAssociationResponse
readList :: ReadS [UpdateDomainAssociationResponse]
$creadList :: ReadS [UpdateDomainAssociationResponse]
readsPrec :: Int -> ReadS UpdateDomainAssociationResponse
$creadsPrec :: Int -> ReadS UpdateDomainAssociationResponse
Prelude.Read, Int -> UpdateDomainAssociationResponse -> ShowS
[UpdateDomainAssociationResponse] -> ShowS
UpdateDomainAssociationResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateDomainAssociationResponse] -> ShowS
$cshowList :: [UpdateDomainAssociationResponse] -> ShowS
show :: UpdateDomainAssociationResponse -> String
$cshow :: UpdateDomainAssociationResponse -> String
showsPrec :: Int -> UpdateDomainAssociationResponse -> ShowS
$cshowsPrec :: Int -> UpdateDomainAssociationResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateDomainAssociationResponse x
-> UpdateDomainAssociationResponse
forall x.
UpdateDomainAssociationResponse
-> Rep UpdateDomainAssociationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateDomainAssociationResponse x
-> UpdateDomainAssociationResponse
$cfrom :: forall x.
UpdateDomainAssociationResponse
-> Rep UpdateDomainAssociationResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateDomainAssociationResponse' 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:
--
-- 'httpStatus', 'updateDomainAssociationResponse_httpStatus' - The response's http status code.
--
-- 'domainAssociation', 'updateDomainAssociationResponse_domainAssociation' - Describes a domain association, which associates a custom domain with an
-- Amplify app.
newUpdateDomainAssociationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'domainAssociation'
  DomainAssociation ->
  UpdateDomainAssociationResponse
newUpdateDomainAssociationResponse :: Int -> DomainAssociation -> UpdateDomainAssociationResponse
newUpdateDomainAssociationResponse
  Int
pHttpStatus_
  DomainAssociation
pDomainAssociation_ =
    UpdateDomainAssociationResponse'
      { $sel:httpStatus:UpdateDomainAssociationResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:domainAssociation:UpdateDomainAssociationResponse' :: DomainAssociation
domainAssociation = DomainAssociation
pDomainAssociation_
      }

-- | The response's http status code.
updateDomainAssociationResponse_httpStatus :: Lens.Lens' UpdateDomainAssociationResponse Prelude.Int
updateDomainAssociationResponse_httpStatus :: Lens' UpdateDomainAssociationResponse Int
updateDomainAssociationResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainAssociationResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateDomainAssociationResponse' :: UpdateDomainAssociationResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateDomainAssociationResponse
s@UpdateDomainAssociationResponse' {} Int
a -> UpdateDomainAssociationResponse
s {$sel:httpStatus:UpdateDomainAssociationResponse' :: Int
httpStatus = Int
a} :: UpdateDomainAssociationResponse)

-- | Describes a domain association, which associates a custom domain with an
-- Amplify app.
updateDomainAssociationResponse_domainAssociation :: Lens.Lens' UpdateDomainAssociationResponse DomainAssociation
updateDomainAssociationResponse_domainAssociation :: Lens' UpdateDomainAssociationResponse DomainAssociation
updateDomainAssociationResponse_domainAssociation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainAssociationResponse' {DomainAssociation
domainAssociation :: DomainAssociation
$sel:domainAssociation:UpdateDomainAssociationResponse' :: UpdateDomainAssociationResponse -> DomainAssociation
domainAssociation} -> DomainAssociation
domainAssociation) (\s :: UpdateDomainAssociationResponse
s@UpdateDomainAssociationResponse' {} DomainAssociation
a -> UpdateDomainAssociationResponse
s {$sel:domainAssociation:UpdateDomainAssociationResponse' :: DomainAssociation
domainAssociation = DomainAssociation
a} :: UpdateDomainAssociationResponse)

instance
  Prelude.NFData
    UpdateDomainAssociationResponse
  where
  rnf :: UpdateDomainAssociationResponse -> ()
rnf UpdateDomainAssociationResponse' {Int
DomainAssociation
domainAssociation :: DomainAssociation
httpStatus :: Int
$sel:domainAssociation:UpdateDomainAssociationResponse' :: UpdateDomainAssociationResponse -> DomainAssociation
$sel:httpStatus:UpdateDomainAssociationResponse' :: UpdateDomainAssociationResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf DomainAssociation
domainAssociation