{-# 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.AnalyticsConfiguration 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.AnalyticsFilter
import Amazonka.S3.Types.StorageClassAnalysis
data AnalyticsConfiguration = AnalyticsConfiguration'
{
AnalyticsConfiguration -> Maybe AnalyticsFilter
filter' :: Prelude.Maybe AnalyticsFilter,
AnalyticsConfiguration -> Text
id :: Prelude.Text,
AnalyticsConfiguration -> StorageClassAnalysis
storageClassAnalysis :: StorageClassAnalysis
}
deriving (AnalyticsConfiguration -> AnalyticsConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AnalyticsConfiguration -> AnalyticsConfiguration -> Bool
$c/= :: AnalyticsConfiguration -> AnalyticsConfiguration -> Bool
== :: AnalyticsConfiguration -> AnalyticsConfiguration -> Bool
$c== :: AnalyticsConfiguration -> AnalyticsConfiguration -> Bool
Prelude.Eq, ReadPrec [AnalyticsConfiguration]
ReadPrec AnalyticsConfiguration
Int -> ReadS AnalyticsConfiguration
ReadS [AnalyticsConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AnalyticsConfiguration]
$creadListPrec :: ReadPrec [AnalyticsConfiguration]
readPrec :: ReadPrec AnalyticsConfiguration
$creadPrec :: ReadPrec AnalyticsConfiguration
readList :: ReadS [AnalyticsConfiguration]
$creadList :: ReadS [AnalyticsConfiguration]
readsPrec :: Int -> ReadS AnalyticsConfiguration
$creadsPrec :: Int -> ReadS AnalyticsConfiguration
Prelude.Read, Int -> AnalyticsConfiguration -> ShowS
[AnalyticsConfiguration] -> ShowS
AnalyticsConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AnalyticsConfiguration] -> ShowS
$cshowList :: [AnalyticsConfiguration] -> ShowS
show :: AnalyticsConfiguration -> String
$cshow :: AnalyticsConfiguration -> String
showsPrec :: Int -> AnalyticsConfiguration -> ShowS
$cshowsPrec :: Int -> AnalyticsConfiguration -> ShowS
Prelude.Show, forall x. Rep AnalyticsConfiguration x -> AnalyticsConfiguration
forall x. AnalyticsConfiguration -> Rep AnalyticsConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AnalyticsConfiguration x -> AnalyticsConfiguration
$cfrom :: forall x. AnalyticsConfiguration -> Rep AnalyticsConfiguration x
Prelude.Generic)
newAnalyticsConfiguration ::
Prelude.Text ->
StorageClassAnalysis ->
AnalyticsConfiguration
newAnalyticsConfiguration :: Text -> StorageClassAnalysis -> AnalyticsConfiguration
newAnalyticsConfiguration Text
pId_ StorageClassAnalysis
pStorageClassAnalysis_ =
AnalyticsConfiguration'
{ $sel:filter':AnalyticsConfiguration' :: Maybe AnalyticsFilter
filter' = forall a. Maybe a
Prelude.Nothing,
$sel:id:AnalyticsConfiguration' :: Text
id = Text
pId_,
$sel:storageClassAnalysis:AnalyticsConfiguration' :: StorageClassAnalysis
storageClassAnalysis = StorageClassAnalysis
pStorageClassAnalysis_
}
analyticsConfiguration_filter :: Lens.Lens' AnalyticsConfiguration (Prelude.Maybe AnalyticsFilter)
analyticsConfiguration_filter :: Lens' AnalyticsConfiguration (Maybe AnalyticsFilter)
analyticsConfiguration_filter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnalyticsConfiguration' {Maybe AnalyticsFilter
filter' :: Maybe AnalyticsFilter
$sel:filter':AnalyticsConfiguration' :: AnalyticsConfiguration -> Maybe AnalyticsFilter
filter'} -> Maybe AnalyticsFilter
filter') (\s :: AnalyticsConfiguration
s@AnalyticsConfiguration' {} Maybe AnalyticsFilter
a -> AnalyticsConfiguration
s {$sel:filter':AnalyticsConfiguration' :: Maybe AnalyticsFilter
filter' = Maybe AnalyticsFilter
a} :: AnalyticsConfiguration)
analyticsConfiguration_id :: Lens.Lens' AnalyticsConfiguration Prelude.Text
analyticsConfiguration_id :: Lens' AnalyticsConfiguration Text
analyticsConfiguration_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnalyticsConfiguration' {Text
id :: Text
$sel:id:AnalyticsConfiguration' :: AnalyticsConfiguration -> Text
id} -> Text
id) (\s :: AnalyticsConfiguration
s@AnalyticsConfiguration' {} Text
a -> AnalyticsConfiguration
s {$sel:id:AnalyticsConfiguration' :: Text
id = Text
a} :: AnalyticsConfiguration)
analyticsConfiguration_storageClassAnalysis :: Lens.Lens' AnalyticsConfiguration StorageClassAnalysis
analyticsConfiguration_storageClassAnalysis :: Lens' AnalyticsConfiguration StorageClassAnalysis
analyticsConfiguration_storageClassAnalysis = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnalyticsConfiguration' {StorageClassAnalysis
storageClassAnalysis :: StorageClassAnalysis
$sel:storageClassAnalysis:AnalyticsConfiguration' :: AnalyticsConfiguration -> StorageClassAnalysis
storageClassAnalysis} -> StorageClassAnalysis
storageClassAnalysis) (\s :: AnalyticsConfiguration
s@AnalyticsConfiguration' {} StorageClassAnalysis
a -> AnalyticsConfiguration
s {$sel:storageClassAnalysis:AnalyticsConfiguration' :: StorageClassAnalysis
storageClassAnalysis = StorageClassAnalysis
a} :: AnalyticsConfiguration)
instance Data.FromXML AnalyticsConfiguration where
parseXML :: [Node] -> Either String AnalyticsConfiguration
parseXML [Node]
x =
Maybe AnalyticsFilter
-> Text -> StorageClassAnalysis -> AnalyticsConfiguration
AnalyticsConfiguration'
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
"Filter")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"Id")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"StorageClassAnalysis")
instance Prelude.Hashable AnalyticsConfiguration where
hashWithSalt :: Int -> AnalyticsConfiguration -> Int
hashWithSalt Int
_salt AnalyticsConfiguration' {Maybe AnalyticsFilter
Text
StorageClassAnalysis
storageClassAnalysis :: StorageClassAnalysis
id :: Text
filter' :: Maybe AnalyticsFilter
$sel:storageClassAnalysis:AnalyticsConfiguration' :: AnalyticsConfiguration -> StorageClassAnalysis
$sel:id:AnalyticsConfiguration' :: AnalyticsConfiguration -> Text
$sel:filter':AnalyticsConfiguration' :: AnalyticsConfiguration -> Maybe AnalyticsFilter
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AnalyticsFilter
filter'
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
id
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` StorageClassAnalysis
storageClassAnalysis
instance Prelude.NFData AnalyticsConfiguration where
rnf :: AnalyticsConfiguration -> ()
rnf AnalyticsConfiguration' {Maybe AnalyticsFilter
Text
StorageClassAnalysis
storageClassAnalysis :: StorageClassAnalysis
id :: Text
filter' :: Maybe AnalyticsFilter
$sel:storageClassAnalysis:AnalyticsConfiguration' :: AnalyticsConfiguration -> StorageClassAnalysis
$sel:id:AnalyticsConfiguration' :: AnalyticsConfiguration -> Text
$sel:filter':AnalyticsConfiguration' :: AnalyticsConfiguration -> Maybe AnalyticsFilter
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe AnalyticsFilter
filter'
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
id
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf StorageClassAnalysis
storageClassAnalysis
instance Data.ToXML AnalyticsConfiguration where
toXML :: AnalyticsConfiguration -> XML
toXML AnalyticsConfiguration' {Maybe AnalyticsFilter
Text
StorageClassAnalysis
storageClassAnalysis :: StorageClassAnalysis
id :: Text
filter' :: Maybe AnalyticsFilter
$sel:storageClassAnalysis:AnalyticsConfiguration' :: AnalyticsConfiguration -> StorageClassAnalysis
$sel:id:AnalyticsConfiguration' :: AnalyticsConfiguration -> Text
$sel:filter':AnalyticsConfiguration' :: AnalyticsConfiguration -> Maybe AnalyticsFilter
..} =
forall a. Monoid a => [a] -> a
Prelude.mconcat
[ Name
"Filter" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe AnalyticsFilter
filter',
Name
"Id" forall a. ToXML a => Name -> a -> XML
Data.@= Text
id,
Name
"StorageClassAnalysis" forall a. ToXML a => Name -> a -> XML
Data.@= StorageClassAnalysis
storageClassAnalysis
]