{-# 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.NetworkManager.CreateSiteToSiteVpnAttachment
-- 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 an Amazon Web Services site-to-site VPN attachment on an edge
-- location of a core network.
module Amazonka.NetworkManager.CreateSiteToSiteVpnAttachment
  ( -- * Creating a Request
    CreateSiteToSiteVpnAttachment (..),
    newCreateSiteToSiteVpnAttachment,

    -- * Request Lenses
    createSiteToSiteVpnAttachment_clientToken,
    createSiteToSiteVpnAttachment_tags,
    createSiteToSiteVpnAttachment_coreNetworkId,
    createSiteToSiteVpnAttachment_vpnConnectionArn,

    -- * Destructuring the Response
    CreateSiteToSiteVpnAttachmentResponse (..),
    newCreateSiteToSiteVpnAttachmentResponse,

    -- * Response Lenses
    createSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment,
    createSiteToSiteVpnAttachmentResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateSiteToSiteVpnAttachment' smart constructor.
data CreateSiteToSiteVpnAttachment = CreateSiteToSiteVpnAttachment'
  { -- | The client token associated with the request.
    CreateSiteToSiteVpnAttachment -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | The tags associated with the request.
    CreateSiteToSiteVpnAttachment -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The ID of a core network where you\'re creating a site-to-site VPN
    -- attachment.
    CreateSiteToSiteVpnAttachment -> Text
coreNetworkId :: Prelude.Text,
    -- | The ARN identifying the VPN attachment.
    CreateSiteToSiteVpnAttachment -> Text
vpnConnectionArn :: Prelude.Text
  }
  deriving (CreateSiteToSiteVpnAttachment
-> CreateSiteToSiteVpnAttachment -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateSiteToSiteVpnAttachment
-> CreateSiteToSiteVpnAttachment -> Bool
$c/= :: CreateSiteToSiteVpnAttachment
-> CreateSiteToSiteVpnAttachment -> Bool
== :: CreateSiteToSiteVpnAttachment
-> CreateSiteToSiteVpnAttachment -> Bool
$c== :: CreateSiteToSiteVpnAttachment
-> CreateSiteToSiteVpnAttachment -> Bool
Prelude.Eq, ReadPrec [CreateSiteToSiteVpnAttachment]
ReadPrec CreateSiteToSiteVpnAttachment
Int -> ReadS CreateSiteToSiteVpnAttachment
ReadS [CreateSiteToSiteVpnAttachment]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateSiteToSiteVpnAttachment]
$creadListPrec :: ReadPrec [CreateSiteToSiteVpnAttachment]
readPrec :: ReadPrec CreateSiteToSiteVpnAttachment
$creadPrec :: ReadPrec CreateSiteToSiteVpnAttachment
readList :: ReadS [CreateSiteToSiteVpnAttachment]
$creadList :: ReadS [CreateSiteToSiteVpnAttachment]
readsPrec :: Int -> ReadS CreateSiteToSiteVpnAttachment
$creadsPrec :: Int -> ReadS CreateSiteToSiteVpnAttachment
Prelude.Read, Int -> CreateSiteToSiteVpnAttachment -> ShowS
[CreateSiteToSiteVpnAttachment] -> ShowS
CreateSiteToSiteVpnAttachment -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateSiteToSiteVpnAttachment] -> ShowS
$cshowList :: [CreateSiteToSiteVpnAttachment] -> ShowS
show :: CreateSiteToSiteVpnAttachment -> String
$cshow :: CreateSiteToSiteVpnAttachment -> String
showsPrec :: Int -> CreateSiteToSiteVpnAttachment -> ShowS
$cshowsPrec :: Int -> CreateSiteToSiteVpnAttachment -> ShowS
Prelude.Show, forall x.
Rep CreateSiteToSiteVpnAttachment x
-> CreateSiteToSiteVpnAttachment
forall x.
CreateSiteToSiteVpnAttachment
-> Rep CreateSiteToSiteVpnAttachment x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateSiteToSiteVpnAttachment x
-> CreateSiteToSiteVpnAttachment
$cfrom :: forall x.
CreateSiteToSiteVpnAttachment
-> Rep CreateSiteToSiteVpnAttachment x
Prelude.Generic)

-- |
-- Create a value of 'CreateSiteToSiteVpnAttachment' 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:
--
-- 'clientToken', 'createSiteToSiteVpnAttachment_clientToken' - The client token associated with the request.
--
-- 'tags', 'createSiteToSiteVpnAttachment_tags' - The tags associated with the request.
--
-- 'coreNetworkId', 'createSiteToSiteVpnAttachment_coreNetworkId' - The ID of a core network where you\'re creating a site-to-site VPN
-- attachment.
--
-- 'vpnConnectionArn', 'createSiteToSiteVpnAttachment_vpnConnectionArn' - The ARN identifying the VPN attachment.
newCreateSiteToSiteVpnAttachment ::
  -- | 'coreNetworkId'
  Prelude.Text ->
  -- | 'vpnConnectionArn'
  Prelude.Text ->
  CreateSiteToSiteVpnAttachment
newCreateSiteToSiteVpnAttachment :: Text -> Text -> CreateSiteToSiteVpnAttachment
newCreateSiteToSiteVpnAttachment
  Text
pCoreNetworkId_
  Text
pVpnConnectionArn_ =
    CreateSiteToSiteVpnAttachment'
      { $sel:clientToken:CreateSiteToSiteVpnAttachment' :: Maybe Text
clientToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateSiteToSiteVpnAttachment' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:coreNetworkId:CreateSiteToSiteVpnAttachment' :: Text
coreNetworkId = Text
pCoreNetworkId_,
        $sel:vpnConnectionArn:CreateSiteToSiteVpnAttachment' :: Text
vpnConnectionArn = Text
pVpnConnectionArn_
      }

-- | The client token associated with the request.
createSiteToSiteVpnAttachment_clientToken :: Lens.Lens' CreateSiteToSiteVpnAttachment (Prelude.Maybe Prelude.Text)
createSiteToSiteVpnAttachment_clientToken :: Lens' CreateSiteToSiteVpnAttachment (Maybe Text)
createSiteToSiteVpnAttachment_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSiteToSiteVpnAttachment' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateSiteToSiteVpnAttachment
s@CreateSiteToSiteVpnAttachment' {} Maybe Text
a -> CreateSiteToSiteVpnAttachment
s {$sel:clientToken:CreateSiteToSiteVpnAttachment' :: Maybe Text
clientToken = Maybe Text
a} :: CreateSiteToSiteVpnAttachment)

-- | The tags associated with the request.
createSiteToSiteVpnAttachment_tags :: Lens.Lens' CreateSiteToSiteVpnAttachment (Prelude.Maybe [Tag])
createSiteToSiteVpnAttachment_tags :: Lens' CreateSiteToSiteVpnAttachment (Maybe [Tag])
createSiteToSiteVpnAttachment_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSiteToSiteVpnAttachment' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateSiteToSiteVpnAttachment
s@CreateSiteToSiteVpnAttachment' {} Maybe [Tag]
a -> CreateSiteToSiteVpnAttachment
s {$sel:tags:CreateSiteToSiteVpnAttachment' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateSiteToSiteVpnAttachment) 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 ID of a core network where you\'re creating a site-to-site VPN
-- attachment.
createSiteToSiteVpnAttachment_coreNetworkId :: Lens.Lens' CreateSiteToSiteVpnAttachment Prelude.Text
createSiteToSiteVpnAttachment_coreNetworkId :: Lens' CreateSiteToSiteVpnAttachment Text
createSiteToSiteVpnAttachment_coreNetworkId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSiteToSiteVpnAttachment' {Text
coreNetworkId :: Text
$sel:coreNetworkId:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Text
coreNetworkId} -> Text
coreNetworkId) (\s :: CreateSiteToSiteVpnAttachment
s@CreateSiteToSiteVpnAttachment' {} Text
a -> CreateSiteToSiteVpnAttachment
s {$sel:coreNetworkId:CreateSiteToSiteVpnAttachment' :: Text
coreNetworkId = Text
a} :: CreateSiteToSiteVpnAttachment)

-- | The ARN identifying the VPN attachment.
createSiteToSiteVpnAttachment_vpnConnectionArn :: Lens.Lens' CreateSiteToSiteVpnAttachment Prelude.Text
createSiteToSiteVpnAttachment_vpnConnectionArn :: Lens' CreateSiteToSiteVpnAttachment Text
createSiteToSiteVpnAttachment_vpnConnectionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSiteToSiteVpnAttachment' {Text
vpnConnectionArn :: Text
$sel:vpnConnectionArn:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Text
vpnConnectionArn} -> Text
vpnConnectionArn) (\s :: CreateSiteToSiteVpnAttachment
s@CreateSiteToSiteVpnAttachment' {} Text
a -> CreateSiteToSiteVpnAttachment
s {$sel:vpnConnectionArn:CreateSiteToSiteVpnAttachment' :: Text
vpnConnectionArn = Text
a} :: CreateSiteToSiteVpnAttachment)

instance
  Core.AWSRequest
    CreateSiteToSiteVpnAttachment
  where
  type
    AWSResponse CreateSiteToSiteVpnAttachment =
      CreateSiteToSiteVpnAttachmentResponse
  request :: (Service -> Service)
-> CreateSiteToSiteVpnAttachment
-> Request CreateSiteToSiteVpnAttachment
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 CreateSiteToSiteVpnAttachment
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateSiteToSiteVpnAttachment)))
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 ->
          Maybe SiteToSiteVpnAttachment
-> Int -> CreateSiteToSiteVpnAttachmentResponse
CreateSiteToSiteVpnAttachmentResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"SiteToSiteVpnAttachment")
            forall (f :: * -> *) a b. Applicative f => 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))
      )

instance
  Prelude.Hashable
    CreateSiteToSiteVpnAttachment
  where
  hashWithSalt :: Int -> CreateSiteToSiteVpnAttachment -> Int
hashWithSalt Int
_salt CreateSiteToSiteVpnAttachment' {Maybe [Tag]
Maybe Text
Text
vpnConnectionArn :: Text
coreNetworkId :: Text
tags :: Maybe [Tag]
clientToken :: Maybe Text
$sel:vpnConnectionArn:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Text
$sel:coreNetworkId:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Text
$sel:tags:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Maybe [Tag]
$sel:clientToken:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
coreNetworkId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
vpnConnectionArn

instance Prelude.NFData CreateSiteToSiteVpnAttachment where
  rnf :: CreateSiteToSiteVpnAttachment -> ()
rnf CreateSiteToSiteVpnAttachment' {Maybe [Tag]
Maybe Text
Text
vpnConnectionArn :: Text
coreNetworkId :: Text
tags :: Maybe [Tag]
clientToken :: Maybe Text
$sel:vpnConnectionArn:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Text
$sel:coreNetworkId:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Text
$sel:tags:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Maybe [Tag]
$sel:clientToken:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
coreNetworkId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
vpnConnectionArn

instance Data.ToHeaders CreateSiteToSiteVpnAttachment where
  toHeaders :: CreateSiteToSiteVpnAttachment -> 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 CreateSiteToSiteVpnAttachment where
  toJSON :: CreateSiteToSiteVpnAttachment -> Value
toJSON CreateSiteToSiteVpnAttachment' {Maybe [Tag]
Maybe Text
Text
vpnConnectionArn :: Text
coreNetworkId :: Text
tags :: Maybe [Tag]
clientToken :: Maybe Text
$sel:vpnConnectionArn:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Text
$sel:coreNetworkId:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Text
$sel:tags:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Maybe [Tag]
$sel:clientToken:CreateSiteToSiteVpnAttachment' :: CreateSiteToSiteVpnAttachment -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ClientToken" 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
clientToken,
            (Key
"Tags" 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 [Tag]
tags,
            forall a. a -> Maybe a
Prelude.Just (Key
"CoreNetworkId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
coreNetworkId),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"VpnConnectionArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
vpnConnectionArn)
          ]
      )

instance Data.ToPath CreateSiteToSiteVpnAttachment where
  toPath :: CreateSiteToSiteVpnAttachment -> ByteString
toPath =
    forall a b. a -> b -> a
Prelude.const ByteString
"/site-to-site-vpn-attachments"

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

-- | /See:/ 'newCreateSiteToSiteVpnAttachmentResponse' smart constructor.
data CreateSiteToSiteVpnAttachmentResponse = CreateSiteToSiteVpnAttachmentResponse'
  { -- | Details about a site-to-site VPN attachment.
    CreateSiteToSiteVpnAttachmentResponse
-> Maybe SiteToSiteVpnAttachment
siteToSiteVpnAttachment :: Prelude.Maybe SiteToSiteVpnAttachment,
    -- | The response's http status code.
    CreateSiteToSiteVpnAttachmentResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateSiteToSiteVpnAttachmentResponse
-> CreateSiteToSiteVpnAttachmentResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateSiteToSiteVpnAttachmentResponse
-> CreateSiteToSiteVpnAttachmentResponse -> Bool
$c/= :: CreateSiteToSiteVpnAttachmentResponse
-> CreateSiteToSiteVpnAttachmentResponse -> Bool
== :: CreateSiteToSiteVpnAttachmentResponse
-> CreateSiteToSiteVpnAttachmentResponse -> Bool
$c== :: CreateSiteToSiteVpnAttachmentResponse
-> CreateSiteToSiteVpnAttachmentResponse -> Bool
Prelude.Eq, ReadPrec [CreateSiteToSiteVpnAttachmentResponse]
ReadPrec CreateSiteToSiteVpnAttachmentResponse
Int -> ReadS CreateSiteToSiteVpnAttachmentResponse
ReadS [CreateSiteToSiteVpnAttachmentResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateSiteToSiteVpnAttachmentResponse]
$creadListPrec :: ReadPrec [CreateSiteToSiteVpnAttachmentResponse]
readPrec :: ReadPrec CreateSiteToSiteVpnAttachmentResponse
$creadPrec :: ReadPrec CreateSiteToSiteVpnAttachmentResponse
readList :: ReadS [CreateSiteToSiteVpnAttachmentResponse]
$creadList :: ReadS [CreateSiteToSiteVpnAttachmentResponse]
readsPrec :: Int -> ReadS CreateSiteToSiteVpnAttachmentResponse
$creadsPrec :: Int -> ReadS CreateSiteToSiteVpnAttachmentResponse
Prelude.Read, Int -> CreateSiteToSiteVpnAttachmentResponse -> ShowS
[CreateSiteToSiteVpnAttachmentResponse] -> ShowS
CreateSiteToSiteVpnAttachmentResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateSiteToSiteVpnAttachmentResponse] -> ShowS
$cshowList :: [CreateSiteToSiteVpnAttachmentResponse] -> ShowS
show :: CreateSiteToSiteVpnAttachmentResponse -> String
$cshow :: CreateSiteToSiteVpnAttachmentResponse -> String
showsPrec :: Int -> CreateSiteToSiteVpnAttachmentResponse -> ShowS
$cshowsPrec :: Int -> CreateSiteToSiteVpnAttachmentResponse -> ShowS
Prelude.Show, forall x.
Rep CreateSiteToSiteVpnAttachmentResponse x
-> CreateSiteToSiteVpnAttachmentResponse
forall x.
CreateSiteToSiteVpnAttachmentResponse
-> Rep CreateSiteToSiteVpnAttachmentResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateSiteToSiteVpnAttachmentResponse x
-> CreateSiteToSiteVpnAttachmentResponse
$cfrom :: forall x.
CreateSiteToSiteVpnAttachmentResponse
-> Rep CreateSiteToSiteVpnAttachmentResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateSiteToSiteVpnAttachmentResponse' 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:
--
-- 'siteToSiteVpnAttachment', 'createSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment' - Details about a site-to-site VPN attachment.
--
-- 'httpStatus', 'createSiteToSiteVpnAttachmentResponse_httpStatus' - The response's http status code.
newCreateSiteToSiteVpnAttachmentResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateSiteToSiteVpnAttachmentResponse
newCreateSiteToSiteVpnAttachmentResponse :: Int -> CreateSiteToSiteVpnAttachmentResponse
newCreateSiteToSiteVpnAttachmentResponse Int
pHttpStatus_ =
  CreateSiteToSiteVpnAttachmentResponse'
    { $sel:siteToSiteVpnAttachment:CreateSiteToSiteVpnAttachmentResponse' :: Maybe SiteToSiteVpnAttachment
siteToSiteVpnAttachment =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateSiteToSiteVpnAttachmentResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Details about a site-to-site VPN attachment.
createSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment :: Lens.Lens' CreateSiteToSiteVpnAttachmentResponse (Prelude.Maybe SiteToSiteVpnAttachment)
createSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment :: Lens'
  CreateSiteToSiteVpnAttachmentResponse
  (Maybe SiteToSiteVpnAttachment)
createSiteToSiteVpnAttachmentResponse_siteToSiteVpnAttachment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSiteToSiteVpnAttachmentResponse' {Maybe SiteToSiteVpnAttachment
siteToSiteVpnAttachment :: Maybe SiteToSiteVpnAttachment
$sel:siteToSiteVpnAttachment:CreateSiteToSiteVpnAttachmentResponse' :: CreateSiteToSiteVpnAttachmentResponse
-> Maybe SiteToSiteVpnAttachment
siteToSiteVpnAttachment} -> Maybe SiteToSiteVpnAttachment
siteToSiteVpnAttachment) (\s :: CreateSiteToSiteVpnAttachmentResponse
s@CreateSiteToSiteVpnAttachmentResponse' {} Maybe SiteToSiteVpnAttachment
a -> CreateSiteToSiteVpnAttachmentResponse
s {$sel:siteToSiteVpnAttachment:CreateSiteToSiteVpnAttachmentResponse' :: Maybe SiteToSiteVpnAttachment
siteToSiteVpnAttachment = Maybe SiteToSiteVpnAttachment
a} :: CreateSiteToSiteVpnAttachmentResponse)

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

instance
  Prelude.NFData
    CreateSiteToSiteVpnAttachmentResponse
  where
  rnf :: CreateSiteToSiteVpnAttachmentResponse -> ()
rnf CreateSiteToSiteVpnAttachmentResponse' {Int
Maybe SiteToSiteVpnAttachment
httpStatus :: Int
siteToSiteVpnAttachment :: Maybe SiteToSiteVpnAttachment
$sel:httpStatus:CreateSiteToSiteVpnAttachmentResponse' :: CreateSiteToSiteVpnAttachmentResponse -> Int
$sel:siteToSiteVpnAttachment:CreateSiteToSiteVpnAttachmentResponse' :: CreateSiteToSiteVpnAttachmentResponse
-> Maybe SiteToSiteVpnAttachment
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe SiteToSiteVpnAttachment
siteToSiteVpnAttachment
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus