{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Amazonka.S3.Types.MetricsFilter where
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 Amazonka.S3.Internal
import Amazonka.S3.Types.MetricsAndOperator
import Amazonka.S3.Types.Tag
data MetricsFilter = MetricsFilter'
{
MetricsFilter -> Maybe Text
accessPointArn :: Prelude.Maybe Prelude.Text,
MetricsFilter -> Maybe MetricsAndOperator
and :: Prelude.Maybe MetricsAndOperator,
MetricsFilter -> Maybe Text
prefix :: Prelude.Maybe Prelude.Text,
MetricsFilter -> Maybe Tag
tag :: Prelude.Maybe Tag
}
deriving (MetricsFilter -> MetricsFilter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MetricsFilter -> MetricsFilter -> Bool
$c/= :: MetricsFilter -> MetricsFilter -> Bool
== :: MetricsFilter -> MetricsFilter -> Bool
$c== :: MetricsFilter -> MetricsFilter -> Bool
Prelude.Eq, ReadPrec [MetricsFilter]
ReadPrec MetricsFilter
Int -> ReadS MetricsFilter
ReadS [MetricsFilter]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MetricsFilter]
$creadListPrec :: ReadPrec [MetricsFilter]
readPrec :: ReadPrec MetricsFilter
$creadPrec :: ReadPrec MetricsFilter
readList :: ReadS [MetricsFilter]
$creadList :: ReadS [MetricsFilter]
readsPrec :: Int -> ReadS MetricsFilter
$creadsPrec :: Int -> ReadS MetricsFilter
Prelude.Read, Int -> MetricsFilter -> ShowS
[MetricsFilter] -> ShowS
MetricsFilter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MetricsFilter] -> ShowS
$cshowList :: [MetricsFilter] -> ShowS
show :: MetricsFilter -> String
$cshow :: MetricsFilter -> String
showsPrec :: Int -> MetricsFilter -> ShowS
$cshowsPrec :: Int -> MetricsFilter -> ShowS
Prelude.Show, forall x. Rep MetricsFilter x -> MetricsFilter
forall x. MetricsFilter -> Rep MetricsFilter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MetricsFilter x -> MetricsFilter
$cfrom :: forall x. MetricsFilter -> Rep MetricsFilter x
Prelude.Generic)
newMetricsFilter ::
MetricsFilter
newMetricsFilter :: MetricsFilter
newMetricsFilter =
MetricsFilter'
{ $sel:accessPointArn:MetricsFilter' :: Maybe Text
accessPointArn = forall a. Maybe a
Prelude.Nothing,
$sel:and:MetricsFilter' :: Maybe MetricsAndOperator
and = forall a. Maybe a
Prelude.Nothing,
$sel:prefix:MetricsFilter' :: Maybe Text
prefix = forall a. Maybe a
Prelude.Nothing,
$sel:tag:MetricsFilter' :: Maybe Tag
tag = forall a. Maybe a
Prelude.Nothing
}
metricsFilter_accessPointArn :: Lens.Lens' MetricsFilter (Prelude.Maybe Prelude.Text)
metricsFilter_accessPointArn :: Lens' MetricsFilter (Maybe Text)
metricsFilter_accessPointArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MetricsFilter' {Maybe Text
accessPointArn :: Maybe Text
$sel:accessPointArn:MetricsFilter' :: MetricsFilter -> Maybe Text
accessPointArn} -> Maybe Text
accessPointArn) (\s :: MetricsFilter
s@MetricsFilter' {} Maybe Text
a -> MetricsFilter
s {$sel:accessPointArn:MetricsFilter' :: Maybe Text
accessPointArn = Maybe Text
a} :: MetricsFilter)
metricsFilter_and :: Lens.Lens' MetricsFilter (Prelude.Maybe MetricsAndOperator)
metricsFilter_and :: Lens' MetricsFilter (Maybe MetricsAndOperator)
metricsFilter_and = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MetricsFilter' {Maybe MetricsAndOperator
and :: Maybe MetricsAndOperator
$sel:and:MetricsFilter' :: MetricsFilter -> Maybe MetricsAndOperator
and} -> Maybe MetricsAndOperator
and) (\s :: MetricsFilter
s@MetricsFilter' {} Maybe MetricsAndOperator
a -> MetricsFilter
s {$sel:and:MetricsFilter' :: Maybe MetricsAndOperator
and = Maybe MetricsAndOperator
a} :: MetricsFilter)
metricsFilter_prefix :: Lens.Lens' MetricsFilter (Prelude.Maybe Prelude.Text)
metricsFilter_prefix :: Lens' MetricsFilter (Maybe Text)
metricsFilter_prefix = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MetricsFilter' {Maybe Text
prefix :: Maybe Text
$sel:prefix:MetricsFilter' :: MetricsFilter -> Maybe Text
prefix} -> Maybe Text
prefix) (\s :: MetricsFilter
s@MetricsFilter' {} Maybe Text
a -> MetricsFilter
s {$sel:prefix:MetricsFilter' :: Maybe Text
prefix = Maybe Text
a} :: MetricsFilter)
metricsFilter_tag :: Lens.Lens' MetricsFilter (Prelude.Maybe Tag)
metricsFilter_tag :: Lens' MetricsFilter (Maybe Tag)
metricsFilter_tag = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MetricsFilter' {Maybe Tag
tag :: Maybe Tag
$sel:tag:MetricsFilter' :: MetricsFilter -> Maybe Tag
tag} -> Maybe Tag
tag) (\s :: MetricsFilter
s@MetricsFilter' {} Maybe Tag
a -> MetricsFilter
s {$sel:tag:MetricsFilter' :: Maybe Tag
tag = Maybe Tag
a} :: MetricsFilter)
instance Data.FromXML MetricsFilter where
parseXML :: [Node] -> Either String MetricsFilter
parseXML [Node]
x =
Maybe Text
-> Maybe MetricsAndOperator
-> Maybe Text
-> Maybe Tag
-> MetricsFilter
MetricsFilter'
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
"AccessPointArn")
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
"And")
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
"Prefix")
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
"Tag")
instance Prelude.Hashable MetricsFilter where
hashWithSalt :: Int -> MetricsFilter -> Int
hashWithSalt Int
_salt MetricsFilter' {Maybe Text
Maybe Tag
Maybe MetricsAndOperator
tag :: Maybe Tag
prefix :: Maybe Text
and :: Maybe MetricsAndOperator
accessPointArn :: Maybe Text
$sel:tag:MetricsFilter' :: MetricsFilter -> Maybe Tag
$sel:prefix:MetricsFilter' :: MetricsFilter -> Maybe Text
$sel:and:MetricsFilter' :: MetricsFilter -> Maybe MetricsAndOperator
$sel:accessPointArn:MetricsFilter' :: MetricsFilter -> Maybe Text
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
accessPointArn
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MetricsAndOperator
and
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
prefix
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Tag
tag
instance Prelude.NFData MetricsFilter where
rnf :: MetricsFilter -> ()
rnf MetricsFilter' {Maybe Text
Maybe Tag
Maybe MetricsAndOperator
tag :: Maybe Tag
prefix :: Maybe Text
and :: Maybe MetricsAndOperator
accessPointArn :: Maybe Text
$sel:tag:MetricsFilter' :: MetricsFilter -> Maybe Tag
$sel:prefix:MetricsFilter' :: MetricsFilter -> Maybe Text
$sel:and:MetricsFilter' :: MetricsFilter -> Maybe MetricsAndOperator
$sel:accessPointArn:MetricsFilter' :: MetricsFilter -> Maybe Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
accessPointArn
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MetricsAndOperator
and
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
prefix
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Tag
tag
instance Data.ToXML MetricsFilter where
toXML :: MetricsFilter -> XML
toXML MetricsFilter' {Maybe Text
Maybe Tag
Maybe MetricsAndOperator
tag :: Maybe Tag
prefix :: Maybe Text
and :: Maybe MetricsAndOperator
accessPointArn :: Maybe Text
$sel:tag:MetricsFilter' :: MetricsFilter -> Maybe Tag
$sel:prefix:MetricsFilter' :: MetricsFilter -> Maybe Text
$sel:and:MetricsFilter' :: MetricsFilter -> Maybe MetricsAndOperator
$sel:accessPointArn:MetricsFilter' :: MetricsFilter -> Maybe Text
..} =
forall a. Monoid a => [a] -> a
Prelude.mconcat
[ Name
"AccessPointArn" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe Text
accessPointArn,
Name
"And" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe MetricsAndOperator
and,
Name
"Prefix" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe Text
prefix,
Name
"Tag" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe Tag
tag
]