{-# 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.EC2.CreateTrafficMirrorFilter
-- 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 Traffic Mirror filter.
--
-- A Traffic Mirror filter is a set of rules that defines the traffic to
-- mirror.
--
-- By default, no traffic is mirrored. To mirror traffic, use
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTrafficMirrorFilterRule.htm CreateTrafficMirrorFilterRule>
-- to add Traffic Mirror rules to the filter. The rules you add define what
-- traffic gets mirrored. You can also use
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyTrafficMirrorFilterNetworkServices.html ModifyTrafficMirrorFilterNetworkServices>
-- to mirror supported network services.
module Amazonka.EC2.CreateTrafficMirrorFilter
  ( -- * Creating a Request
    CreateTrafficMirrorFilter (..),
    newCreateTrafficMirrorFilter,

    -- * Request Lenses
    createTrafficMirrorFilter_clientToken,
    createTrafficMirrorFilter_description,
    createTrafficMirrorFilter_dryRun,
    createTrafficMirrorFilter_tagSpecifications,

    -- * Destructuring the Response
    CreateTrafficMirrorFilterResponse (..),
    newCreateTrafficMirrorFilterResponse,

    -- * Response Lenses
    createTrafficMirrorFilterResponse_clientToken,
    createTrafficMirrorFilterResponse_trafficMirrorFilter,
    createTrafficMirrorFilterResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateTrafficMirrorFilter' smart constructor.
data CreateTrafficMirrorFilter = CreateTrafficMirrorFilter'
  { -- | Unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of the request. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to ensure idempotency>.
    CreateTrafficMirrorFilter -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | The description of the Traffic Mirror filter.
    CreateTrafficMirrorFilter -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    CreateTrafficMirrorFilter -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The tags to assign to a Traffic Mirror filter.
    CreateTrafficMirrorFilter -> Maybe [TagSpecification]
tagSpecifications :: Prelude.Maybe [TagSpecification]
  }
  deriving (CreateTrafficMirrorFilter -> CreateTrafficMirrorFilter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateTrafficMirrorFilter -> CreateTrafficMirrorFilter -> Bool
$c/= :: CreateTrafficMirrorFilter -> CreateTrafficMirrorFilter -> Bool
== :: CreateTrafficMirrorFilter -> CreateTrafficMirrorFilter -> Bool
$c== :: CreateTrafficMirrorFilter -> CreateTrafficMirrorFilter -> Bool
Prelude.Eq, ReadPrec [CreateTrafficMirrorFilter]
ReadPrec CreateTrafficMirrorFilter
Int -> ReadS CreateTrafficMirrorFilter
ReadS [CreateTrafficMirrorFilter]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateTrafficMirrorFilter]
$creadListPrec :: ReadPrec [CreateTrafficMirrorFilter]
readPrec :: ReadPrec CreateTrafficMirrorFilter
$creadPrec :: ReadPrec CreateTrafficMirrorFilter
readList :: ReadS [CreateTrafficMirrorFilter]
$creadList :: ReadS [CreateTrafficMirrorFilter]
readsPrec :: Int -> ReadS CreateTrafficMirrorFilter
$creadsPrec :: Int -> ReadS CreateTrafficMirrorFilter
Prelude.Read, Int -> CreateTrafficMirrorFilter -> ShowS
[CreateTrafficMirrorFilter] -> ShowS
CreateTrafficMirrorFilter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateTrafficMirrorFilter] -> ShowS
$cshowList :: [CreateTrafficMirrorFilter] -> ShowS
show :: CreateTrafficMirrorFilter -> String
$cshow :: CreateTrafficMirrorFilter -> String
showsPrec :: Int -> CreateTrafficMirrorFilter -> ShowS
$cshowsPrec :: Int -> CreateTrafficMirrorFilter -> ShowS
Prelude.Show, forall x.
Rep CreateTrafficMirrorFilter x -> CreateTrafficMirrorFilter
forall x.
CreateTrafficMirrorFilter -> Rep CreateTrafficMirrorFilter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateTrafficMirrorFilter x -> CreateTrafficMirrorFilter
$cfrom :: forall x.
CreateTrafficMirrorFilter -> Rep CreateTrafficMirrorFilter x
Prelude.Generic)

-- |
-- Create a value of 'CreateTrafficMirrorFilter' 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', 'createTrafficMirrorFilter_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to ensure idempotency>.
--
-- 'description', 'createTrafficMirrorFilter_description' - The description of the Traffic Mirror filter.
--
-- 'dryRun', 'createTrafficMirrorFilter_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'tagSpecifications', 'createTrafficMirrorFilter_tagSpecifications' - The tags to assign to a Traffic Mirror filter.
newCreateTrafficMirrorFilter ::
  CreateTrafficMirrorFilter
newCreateTrafficMirrorFilter :: CreateTrafficMirrorFilter
newCreateTrafficMirrorFilter =
  CreateTrafficMirrorFilter'
    { $sel:clientToken:CreateTrafficMirrorFilter' :: Maybe Text
clientToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:description:CreateTrafficMirrorFilter' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:dryRun:CreateTrafficMirrorFilter' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
      $sel:tagSpecifications:CreateTrafficMirrorFilter' :: Maybe [TagSpecification]
tagSpecifications = forall a. Maybe a
Prelude.Nothing
    }

-- | Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to ensure idempotency>.
createTrafficMirrorFilter_clientToken :: Lens.Lens' CreateTrafficMirrorFilter (Prelude.Maybe Prelude.Text)
createTrafficMirrorFilter_clientToken :: Lens' CreateTrafficMirrorFilter (Maybe Text)
createTrafficMirrorFilter_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrafficMirrorFilter' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateTrafficMirrorFilter
s@CreateTrafficMirrorFilter' {} Maybe Text
a -> CreateTrafficMirrorFilter
s {$sel:clientToken:CreateTrafficMirrorFilter' :: Maybe Text
clientToken = Maybe Text
a} :: CreateTrafficMirrorFilter)

-- | The description of the Traffic Mirror filter.
createTrafficMirrorFilter_description :: Lens.Lens' CreateTrafficMirrorFilter (Prelude.Maybe Prelude.Text)
createTrafficMirrorFilter_description :: Lens' CreateTrafficMirrorFilter (Maybe Text)
createTrafficMirrorFilter_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrafficMirrorFilter' {Maybe Text
description :: Maybe Text
$sel:description:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe Text
description} -> Maybe Text
description) (\s :: CreateTrafficMirrorFilter
s@CreateTrafficMirrorFilter' {} Maybe Text
a -> CreateTrafficMirrorFilter
s {$sel:description:CreateTrafficMirrorFilter' :: Maybe Text
description = Maybe Text
a} :: CreateTrafficMirrorFilter)

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
createTrafficMirrorFilter_dryRun :: Lens.Lens' CreateTrafficMirrorFilter (Prelude.Maybe Prelude.Bool)
createTrafficMirrorFilter_dryRun :: Lens' CreateTrafficMirrorFilter (Maybe Bool)
createTrafficMirrorFilter_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrafficMirrorFilter' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: CreateTrafficMirrorFilter
s@CreateTrafficMirrorFilter' {} Maybe Bool
a -> CreateTrafficMirrorFilter
s {$sel:dryRun:CreateTrafficMirrorFilter' :: Maybe Bool
dryRun = Maybe Bool
a} :: CreateTrafficMirrorFilter)

-- | The tags to assign to a Traffic Mirror filter.
createTrafficMirrorFilter_tagSpecifications :: Lens.Lens' CreateTrafficMirrorFilter (Prelude.Maybe [TagSpecification])
createTrafficMirrorFilter_tagSpecifications :: Lens' CreateTrafficMirrorFilter (Maybe [TagSpecification])
createTrafficMirrorFilter_tagSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrafficMirrorFilter' {Maybe [TagSpecification]
tagSpecifications :: Maybe [TagSpecification]
$sel:tagSpecifications:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe [TagSpecification]
tagSpecifications} -> Maybe [TagSpecification]
tagSpecifications) (\s :: CreateTrafficMirrorFilter
s@CreateTrafficMirrorFilter' {} Maybe [TagSpecification]
a -> CreateTrafficMirrorFilter
s {$sel:tagSpecifications:CreateTrafficMirrorFilter' :: Maybe [TagSpecification]
tagSpecifications = Maybe [TagSpecification]
a} :: CreateTrafficMirrorFilter) 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

instance Core.AWSRequest CreateTrafficMirrorFilter where
  type
    AWSResponse CreateTrafficMirrorFilter =
      CreateTrafficMirrorFilterResponse
  request :: (Service -> Service)
-> CreateTrafficMirrorFilter -> Request CreateTrafficMirrorFilter
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateTrafficMirrorFilter
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateTrafficMirrorFilter)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe TrafficMirrorFilter
-> Int
-> CreateTrafficMirrorFilterResponse
CreateTrafficMirrorFilterResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"clientToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"trafficMirrorFilter")
            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 CreateTrafficMirrorFilter where
  hashWithSalt :: Int -> CreateTrafficMirrorFilter -> Int
hashWithSalt Int
_salt CreateTrafficMirrorFilter' {Maybe Bool
Maybe [TagSpecification]
Maybe Text
tagSpecifications :: Maybe [TagSpecification]
dryRun :: Maybe Bool
description :: Maybe Text
clientToken :: Maybe Text
$sel:tagSpecifications:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe [TagSpecification]
$sel:dryRun:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe Bool
$sel:description:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe Text
$sel:clientToken:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> 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 Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [TagSpecification]
tagSpecifications

instance Prelude.NFData CreateTrafficMirrorFilter where
  rnf :: CreateTrafficMirrorFilter -> ()
rnf CreateTrafficMirrorFilter' {Maybe Bool
Maybe [TagSpecification]
Maybe Text
tagSpecifications :: Maybe [TagSpecification]
dryRun :: Maybe Bool
description :: Maybe Text
clientToken :: Maybe Text
$sel:tagSpecifications:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe [TagSpecification]
$sel:dryRun:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe Bool
$sel:description:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe Text
$sel:clientToken:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> 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 Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [TagSpecification]
tagSpecifications

instance Data.ToHeaders CreateTrafficMirrorFilter where
  toHeaders :: CreateTrafficMirrorFilter -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath CreateTrafficMirrorFilter where
  toPath :: CreateTrafficMirrorFilter -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery CreateTrafficMirrorFilter where
  toQuery :: CreateTrafficMirrorFilter -> QueryString
toQuery CreateTrafficMirrorFilter' {Maybe Bool
Maybe [TagSpecification]
Maybe Text
tagSpecifications :: Maybe [TagSpecification]
dryRun :: Maybe Bool
description :: Maybe Text
clientToken :: Maybe Text
$sel:tagSpecifications:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe [TagSpecification]
$sel:dryRun:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe Bool
$sel:description:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe Text
$sel:clientToken:CreateTrafficMirrorFilter' :: CreateTrafficMirrorFilter -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"CreateTrafficMirrorFilter" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"ClientToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
clientToken,
        ByteString
"Description" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
description,
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"TagSpecification"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [TagSpecification]
tagSpecifications
          )
      ]

-- | /See:/ 'newCreateTrafficMirrorFilterResponse' smart constructor.
data CreateTrafficMirrorFilterResponse = CreateTrafficMirrorFilterResponse'
  { -- | Unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of the request. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to ensure idempotency>.
    CreateTrafficMirrorFilterResponse -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | Information about the Traffic Mirror filter.
    CreateTrafficMirrorFilterResponse -> Maybe TrafficMirrorFilter
trafficMirrorFilter :: Prelude.Maybe TrafficMirrorFilter,
    -- | The response's http status code.
    CreateTrafficMirrorFilterResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateTrafficMirrorFilterResponse
-> CreateTrafficMirrorFilterResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateTrafficMirrorFilterResponse
-> CreateTrafficMirrorFilterResponse -> Bool
$c/= :: CreateTrafficMirrorFilterResponse
-> CreateTrafficMirrorFilterResponse -> Bool
== :: CreateTrafficMirrorFilterResponse
-> CreateTrafficMirrorFilterResponse -> Bool
$c== :: CreateTrafficMirrorFilterResponse
-> CreateTrafficMirrorFilterResponse -> Bool
Prelude.Eq, ReadPrec [CreateTrafficMirrorFilterResponse]
ReadPrec CreateTrafficMirrorFilterResponse
Int -> ReadS CreateTrafficMirrorFilterResponse
ReadS [CreateTrafficMirrorFilterResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateTrafficMirrorFilterResponse]
$creadListPrec :: ReadPrec [CreateTrafficMirrorFilterResponse]
readPrec :: ReadPrec CreateTrafficMirrorFilterResponse
$creadPrec :: ReadPrec CreateTrafficMirrorFilterResponse
readList :: ReadS [CreateTrafficMirrorFilterResponse]
$creadList :: ReadS [CreateTrafficMirrorFilterResponse]
readsPrec :: Int -> ReadS CreateTrafficMirrorFilterResponse
$creadsPrec :: Int -> ReadS CreateTrafficMirrorFilterResponse
Prelude.Read, Int -> CreateTrafficMirrorFilterResponse -> ShowS
[CreateTrafficMirrorFilterResponse] -> ShowS
CreateTrafficMirrorFilterResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateTrafficMirrorFilterResponse] -> ShowS
$cshowList :: [CreateTrafficMirrorFilterResponse] -> ShowS
show :: CreateTrafficMirrorFilterResponse -> String
$cshow :: CreateTrafficMirrorFilterResponse -> String
showsPrec :: Int -> CreateTrafficMirrorFilterResponse -> ShowS
$cshowsPrec :: Int -> CreateTrafficMirrorFilterResponse -> ShowS
Prelude.Show, forall x.
Rep CreateTrafficMirrorFilterResponse x
-> CreateTrafficMirrorFilterResponse
forall x.
CreateTrafficMirrorFilterResponse
-> Rep CreateTrafficMirrorFilterResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateTrafficMirrorFilterResponse x
-> CreateTrafficMirrorFilterResponse
$cfrom :: forall x.
CreateTrafficMirrorFilterResponse
-> Rep CreateTrafficMirrorFilterResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateTrafficMirrorFilterResponse' 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', 'createTrafficMirrorFilterResponse_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to ensure idempotency>.
--
-- 'trafficMirrorFilter', 'createTrafficMirrorFilterResponse_trafficMirrorFilter' - Information about the Traffic Mirror filter.
--
-- 'httpStatus', 'createTrafficMirrorFilterResponse_httpStatus' - The response's http status code.
newCreateTrafficMirrorFilterResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateTrafficMirrorFilterResponse
newCreateTrafficMirrorFilterResponse :: Int -> CreateTrafficMirrorFilterResponse
newCreateTrafficMirrorFilterResponse Int
pHttpStatus_ =
  CreateTrafficMirrorFilterResponse'
    { $sel:clientToken:CreateTrafficMirrorFilterResponse' :: Maybe Text
clientToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:trafficMirrorFilter:CreateTrafficMirrorFilterResponse' :: Maybe TrafficMirrorFilter
trafficMirrorFilter = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateTrafficMirrorFilterResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to ensure idempotency>.
createTrafficMirrorFilterResponse_clientToken :: Lens.Lens' CreateTrafficMirrorFilterResponse (Prelude.Maybe Prelude.Text)
createTrafficMirrorFilterResponse_clientToken :: Lens' CreateTrafficMirrorFilterResponse (Maybe Text)
createTrafficMirrorFilterResponse_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrafficMirrorFilterResponse' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateTrafficMirrorFilterResponse' :: CreateTrafficMirrorFilterResponse -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateTrafficMirrorFilterResponse
s@CreateTrafficMirrorFilterResponse' {} Maybe Text
a -> CreateTrafficMirrorFilterResponse
s {$sel:clientToken:CreateTrafficMirrorFilterResponse' :: Maybe Text
clientToken = Maybe Text
a} :: CreateTrafficMirrorFilterResponse)

-- | Information about the Traffic Mirror filter.
createTrafficMirrorFilterResponse_trafficMirrorFilter :: Lens.Lens' CreateTrafficMirrorFilterResponse (Prelude.Maybe TrafficMirrorFilter)
createTrafficMirrorFilterResponse_trafficMirrorFilter :: Lens' CreateTrafficMirrorFilterResponse (Maybe TrafficMirrorFilter)
createTrafficMirrorFilterResponse_trafficMirrorFilter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrafficMirrorFilterResponse' {Maybe TrafficMirrorFilter
trafficMirrorFilter :: Maybe TrafficMirrorFilter
$sel:trafficMirrorFilter:CreateTrafficMirrorFilterResponse' :: CreateTrafficMirrorFilterResponse -> Maybe TrafficMirrorFilter
trafficMirrorFilter} -> Maybe TrafficMirrorFilter
trafficMirrorFilter) (\s :: CreateTrafficMirrorFilterResponse
s@CreateTrafficMirrorFilterResponse' {} Maybe TrafficMirrorFilter
a -> CreateTrafficMirrorFilterResponse
s {$sel:trafficMirrorFilter:CreateTrafficMirrorFilterResponse' :: Maybe TrafficMirrorFilter
trafficMirrorFilter = Maybe TrafficMirrorFilter
a} :: CreateTrafficMirrorFilterResponse)

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

instance
  Prelude.NFData
    CreateTrafficMirrorFilterResponse
  where
  rnf :: CreateTrafficMirrorFilterResponse -> ()
rnf CreateTrafficMirrorFilterResponse' {Int
Maybe Text
Maybe TrafficMirrorFilter
httpStatus :: Int
trafficMirrorFilter :: Maybe TrafficMirrorFilter
clientToken :: Maybe Text
$sel:httpStatus:CreateTrafficMirrorFilterResponse' :: CreateTrafficMirrorFilterResponse -> Int
$sel:trafficMirrorFilter:CreateTrafficMirrorFilterResponse' :: CreateTrafficMirrorFilterResponse -> Maybe TrafficMirrorFilter
$sel:clientToken:CreateTrafficMirrorFilterResponse' :: CreateTrafficMirrorFilterResponse -> 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 TrafficMirrorFilter
trafficMirrorFilter
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus