{-# 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 #-}
module Amazonka.PinpointEmail.GetDomainStatisticsReport
(
GetDomainStatisticsReport (..),
newGetDomainStatisticsReport,
getDomainStatisticsReport_domain,
getDomainStatisticsReport_startDate,
getDomainStatisticsReport_endDate,
GetDomainStatisticsReportResponse (..),
newGetDomainStatisticsReportResponse,
getDomainStatisticsReportResponse_httpStatus,
getDomainStatisticsReportResponse_overallVolume,
getDomainStatisticsReportResponse_dailyVolumes,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.PinpointEmail.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
data GetDomainStatisticsReport = GetDomainStatisticsReport'
{
GetDomainStatisticsReport -> Text
domain :: Prelude.Text,
GetDomainStatisticsReport -> POSIX
startDate :: Data.POSIX,
GetDomainStatisticsReport -> POSIX
endDate :: Data.POSIX
}
deriving (GetDomainStatisticsReport -> GetDomainStatisticsReport -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetDomainStatisticsReport -> GetDomainStatisticsReport -> Bool
$c/= :: GetDomainStatisticsReport -> GetDomainStatisticsReport -> Bool
== :: GetDomainStatisticsReport -> GetDomainStatisticsReport -> Bool
$c== :: GetDomainStatisticsReport -> GetDomainStatisticsReport -> Bool
Prelude.Eq, ReadPrec [GetDomainStatisticsReport]
ReadPrec GetDomainStatisticsReport
Int -> ReadS GetDomainStatisticsReport
ReadS [GetDomainStatisticsReport]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetDomainStatisticsReport]
$creadListPrec :: ReadPrec [GetDomainStatisticsReport]
readPrec :: ReadPrec GetDomainStatisticsReport
$creadPrec :: ReadPrec GetDomainStatisticsReport
readList :: ReadS [GetDomainStatisticsReport]
$creadList :: ReadS [GetDomainStatisticsReport]
readsPrec :: Int -> ReadS GetDomainStatisticsReport
$creadsPrec :: Int -> ReadS GetDomainStatisticsReport
Prelude.Read, Int -> GetDomainStatisticsReport -> ShowS
[GetDomainStatisticsReport] -> ShowS
GetDomainStatisticsReport -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetDomainStatisticsReport] -> ShowS
$cshowList :: [GetDomainStatisticsReport] -> ShowS
show :: GetDomainStatisticsReport -> String
$cshow :: GetDomainStatisticsReport -> String
showsPrec :: Int -> GetDomainStatisticsReport -> ShowS
$cshowsPrec :: Int -> GetDomainStatisticsReport -> ShowS
Prelude.Show, forall x.
Rep GetDomainStatisticsReport x -> GetDomainStatisticsReport
forall x.
GetDomainStatisticsReport -> Rep GetDomainStatisticsReport x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetDomainStatisticsReport x -> GetDomainStatisticsReport
$cfrom :: forall x.
GetDomainStatisticsReport -> Rep GetDomainStatisticsReport x
Prelude.Generic)
newGetDomainStatisticsReport ::
Prelude.Text ->
Prelude.UTCTime ->
Prelude.UTCTime ->
GetDomainStatisticsReport
newGetDomainStatisticsReport :: Text -> UTCTime -> UTCTime -> GetDomainStatisticsReport
newGetDomainStatisticsReport
Text
pDomain_
UTCTime
pStartDate_
UTCTime
pEndDate_ =
GetDomainStatisticsReport'
{ $sel:domain:GetDomainStatisticsReport' :: Text
domain = Text
pDomain_,
$sel:startDate:GetDomainStatisticsReport' :: POSIX
startDate = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pStartDate_,
$sel:endDate:GetDomainStatisticsReport' :: POSIX
endDate = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pEndDate_
}
getDomainStatisticsReport_domain :: Lens.Lens' GetDomainStatisticsReport Prelude.Text
getDomainStatisticsReport_domain :: Lens' GetDomainStatisticsReport Text
getDomainStatisticsReport_domain = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainStatisticsReport' {Text
domain :: Text
$sel:domain:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> Text
domain} -> Text
domain) (\s :: GetDomainStatisticsReport
s@GetDomainStatisticsReport' {} Text
a -> GetDomainStatisticsReport
s {$sel:domain:GetDomainStatisticsReport' :: Text
domain = Text
a} :: GetDomainStatisticsReport)
getDomainStatisticsReport_startDate :: Lens.Lens' GetDomainStatisticsReport Prelude.UTCTime
getDomainStatisticsReport_startDate :: Lens' GetDomainStatisticsReport UTCTime
getDomainStatisticsReport_startDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainStatisticsReport' {POSIX
startDate :: POSIX
$sel:startDate:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> POSIX
startDate} -> POSIX
startDate) (\s :: GetDomainStatisticsReport
s@GetDomainStatisticsReport' {} POSIX
a -> GetDomainStatisticsReport
s {$sel:startDate:GetDomainStatisticsReport' :: POSIX
startDate = POSIX
a} :: GetDomainStatisticsReport) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time
getDomainStatisticsReport_endDate :: Lens.Lens' GetDomainStatisticsReport Prelude.UTCTime
getDomainStatisticsReport_endDate :: Lens' GetDomainStatisticsReport UTCTime
getDomainStatisticsReport_endDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainStatisticsReport' {POSIX
endDate :: POSIX
$sel:endDate:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> POSIX
endDate} -> POSIX
endDate) (\s :: GetDomainStatisticsReport
s@GetDomainStatisticsReport' {} POSIX
a -> GetDomainStatisticsReport
s {$sel:endDate:GetDomainStatisticsReport' :: POSIX
endDate = POSIX
a} :: GetDomainStatisticsReport) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time
instance Core.AWSRequest GetDomainStatisticsReport where
type
AWSResponse GetDomainStatisticsReport =
GetDomainStatisticsReportResponse
request :: (Service -> Service)
-> GetDomainStatisticsReport -> Request GetDomainStatisticsReport
request Service -> Service
overrides =
forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetDomainStatisticsReport
-> ClientResponse ClientBody
-> m (Either
Error (ClientResponse (AWSResponse GetDomainStatisticsReport)))
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
-> OverallVolume
-> [DailyVolume]
-> GetDomainStatisticsReportResponse
GetDomainStatisticsReportResponse'
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
"OverallVolume")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"DailyVolumes" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
)
instance Prelude.Hashable GetDomainStatisticsReport where
hashWithSalt :: Int -> GetDomainStatisticsReport -> Int
hashWithSalt Int
_salt GetDomainStatisticsReport' {Text
POSIX
endDate :: POSIX
startDate :: POSIX
domain :: Text
$sel:endDate:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> POSIX
$sel:startDate:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> POSIX
$sel:domain:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> Text
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domain
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
startDate
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
endDate
instance Prelude.NFData GetDomainStatisticsReport where
rnf :: GetDomainStatisticsReport -> ()
rnf GetDomainStatisticsReport' {Text
POSIX
endDate :: POSIX
startDate :: POSIX
domain :: Text
$sel:endDate:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> POSIX
$sel:startDate:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> POSIX
$sel:domain:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Text
domain
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
startDate
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
endDate
instance Data.ToHeaders GetDomainStatisticsReport where
toHeaders :: GetDomainStatisticsReport -> 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.ToPath GetDomainStatisticsReport where
toPath :: GetDomainStatisticsReport -> ByteString
toPath GetDomainStatisticsReport' {Text
POSIX
endDate :: POSIX
startDate :: POSIX
domain :: Text
$sel:endDate:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> POSIX
$sel:startDate:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> POSIX
$sel:domain:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> Text
..} =
forall a. Monoid a => [a] -> a
Prelude.mconcat
[ ByteString
"/v1/email/deliverability-dashboard/statistics-report/",
forall a. ToByteString a => a -> ByteString
Data.toBS Text
domain
]
instance Data.ToQuery GetDomainStatisticsReport where
toQuery :: GetDomainStatisticsReport -> QueryString
toQuery GetDomainStatisticsReport' {Text
POSIX
endDate :: POSIX
startDate :: POSIX
domain :: Text
$sel:endDate:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> POSIX
$sel:startDate:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> POSIX
$sel:domain:GetDomainStatisticsReport' :: GetDomainStatisticsReport -> Text
..} =
forall a. Monoid a => [a] -> a
Prelude.mconcat
[ ByteString
"StartDate" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: POSIX
startDate,
ByteString
"EndDate" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: POSIX
endDate
]
data GetDomainStatisticsReportResponse = GetDomainStatisticsReportResponse'
{
GetDomainStatisticsReportResponse -> Int
httpStatus :: Prelude.Int,
GetDomainStatisticsReportResponse -> OverallVolume
overallVolume :: OverallVolume,
GetDomainStatisticsReportResponse -> [DailyVolume]
dailyVolumes :: [DailyVolume]
}
deriving (GetDomainStatisticsReportResponse
-> GetDomainStatisticsReportResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetDomainStatisticsReportResponse
-> GetDomainStatisticsReportResponse -> Bool
$c/= :: GetDomainStatisticsReportResponse
-> GetDomainStatisticsReportResponse -> Bool
== :: GetDomainStatisticsReportResponse
-> GetDomainStatisticsReportResponse -> Bool
$c== :: GetDomainStatisticsReportResponse
-> GetDomainStatisticsReportResponse -> Bool
Prelude.Eq, ReadPrec [GetDomainStatisticsReportResponse]
ReadPrec GetDomainStatisticsReportResponse
Int -> ReadS GetDomainStatisticsReportResponse
ReadS [GetDomainStatisticsReportResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetDomainStatisticsReportResponse]
$creadListPrec :: ReadPrec [GetDomainStatisticsReportResponse]
readPrec :: ReadPrec GetDomainStatisticsReportResponse
$creadPrec :: ReadPrec GetDomainStatisticsReportResponse
readList :: ReadS [GetDomainStatisticsReportResponse]
$creadList :: ReadS [GetDomainStatisticsReportResponse]
readsPrec :: Int -> ReadS GetDomainStatisticsReportResponse
$creadsPrec :: Int -> ReadS GetDomainStatisticsReportResponse
Prelude.Read, Int -> GetDomainStatisticsReportResponse -> ShowS
[GetDomainStatisticsReportResponse] -> ShowS
GetDomainStatisticsReportResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetDomainStatisticsReportResponse] -> ShowS
$cshowList :: [GetDomainStatisticsReportResponse] -> ShowS
show :: GetDomainStatisticsReportResponse -> String
$cshow :: GetDomainStatisticsReportResponse -> String
showsPrec :: Int -> GetDomainStatisticsReportResponse -> ShowS
$cshowsPrec :: Int -> GetDomainStatisticsReportResponse -> ShowS
Prelude.Show, forall x.
Rep GetDomainStatisticsReportResponse x
-> GetDomainStatisticsReportResponse
forall x.
GetDomainStatisticsReportResponse
-> Rep GetDomainStatisticsReportResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetDomainStatisticsReportResponse x
-> GetDomainStatisticsReportResponse
$cfrom :: forall x.
GetDomainStatisticsReportResponse
-> Rep GetDomainStatisticsReportResponse x
Prelude.Generic)
newGetDomainStatisticsReportResponse ::
Prelude.Int ->
OverallVolume ->
GetDomainStatisticsReportResponse
newGetDomainStatisticsReportResponse :: Int -> OverallVolume -> GetDomainStatisticsReportResponse
newGetDomainStatisticsReportResponse
Int
pHttpStatus_
OverallVolume
pOverallVolume_ =
GetDomainStatisticsReportResponse'
{ $sel:httpStatus:GetDomainStatisticsReportResponse' :: Int
httpStatus =
Int
pHttpStatus_,
$sel:overallVolume:GetDomainStatisticsReportResponse' :: OverallVolume
overallVolume = OverallVolume
pOverallVolume_,
$sel:dailyVolumes:GetDomainStatisticsReportResponse' :: [DailyVolume]
dailyVolumes = forall a. Monoid a => a
Prelude.mempty
}
getDomainStatisticsReportResponse_httpStatus :: Lens.Lens' GetDomainStatisticsReportResponse Prelude.Int
getDomainStatisticsReportResponse_httpStatus :: Lens' GetDomainStatisticsReportResponse Int
getDomainStatisticsReportResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainStatisticsReportResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetDomainStatisticsReportResponse' :: GetDomainStatisticsReportResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetDomainStatisticsReportResponse
s@GetDomainStatisticsReportResponse' {} Int
a -> GetDomainStatisticsReportResponse
s {$sel:httpStatus:GetDomainStatisticsReportResponse' :: Int
httpStatus = Int
a} :: GetDomainStatisticsReportResponse)
getDomainStatisticsReportResponse_overallVolume :: Lens.Lens' GetDomainStatisticsReportResponse OverallVolume
getDomainStatisticsReportResponse_overallVolume :: Lens' GetDomainStatisticsReportResponse OverallVolume
getDomainStatisticsReportResponse_overallVolume = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainStatisticsReportResponse' {OverallVolume
overallVolume :: OverallVolume
$sel:overallVolume:GetDomainStatisticsReportResponse' :: GetDomainStatisticsReportResponse -> OverallVolume
overallVolume} -> OverallVolume
overallVolume) (\s :: GetDomainStatisticsReportResponse
s@GetDomainStatisticsReportResponse' {} OverallVolume
a -> GetDomainStatisticsReportResponse
s {$sel:overallVolume:GetDomainStatisticsReportResponse' :: OverallVolume
overallVolume = OverallVolume
a} :: GetDomainStatisticsReportResponse)
getDomainStatisticsReportResponse_dailyVolumes :: Lens.Lens' GetDomainStatisticsReportResponse [DailyVolume]
getDomainStatisticsReportResponse_dailyVolumes :: Lens' GetDomainStatisticsReportResponse [DailyVolume]
getDomainStatisticsReportResponse_dailyVolumes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainStatisticsReportResponse' {[DailyVolume]
dailyVolumes :: [DailyVolume]
$sel:dailyVolumes:GetDomainStatisticsReportResponse' :: GetDomainStatisticsReportResponse -> [DailyVolume]
dailyVolumes} -> [DailyVolume]
dailyVolumes) (\s :: GetDomainStatisticsReportResponse
s@GetDomainStatisticsReportResponse' {} [DailyVolume]
a -> GetDomainStatisticsReportResponse
s {$sel:dailyVolumes:GetDomainStatisticsReportResponse' :: [DailyVolume]
dailyVolumes = [DailyVolume]
a} :: GetDomainStatisticsReportResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
instance
Prelude.NFData
GetDomainStatisticsReportResponse
where
rnf :: GetDomainStatisticsReportResponse -> ()
rnf GetDomainStatisticsReportResponse' {Int
[DailyVolume]
OverallVolume
dailyVolumes :: [DailyVolume]
overallVolume :: OverallVolume
httpStatus :: Int
$sel:dailyVolumes:GetDomainStatisticsReportResponse' :: GetDomainStatisticsReportResponse -> [DailyVolume]
$sel:overallVolume:GetDomainStatisticsReportResponse' :: GetDomainStatisticsReportResponse -> OverallVolume
$sel:httpStatus:GetDomainStatisticsReportResponse' :: GetDomainStatisticsReportResponse -> 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 OverallVolume
overallVolume
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [DailyVolume]
dailyVolumes