{-# 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.Personalize.DescribeEventTracker
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes an event tracker. The response includes the @trackingId@ and
-- @status@ of the event tracker. For more information on event trackers,
-- see
-- <https://docs.aws.amazon.com/personalize/latest/dg/API_CreateEventTracker.html CreateEventTracker>.
module Amazonka.Personalize.DescribeEventTracker
  ( -- * Creating a Request
    DescribeEventTracker (..),
    newDescribeEventTracker,

    -- * Request Lenses
    describeEventTracker_eventTrackerArn,

    -- * Destructuring the Response
    DescribeEventTrackerResponse (..),
    newDescribeEventTrackerResponse,

    -- * Response Lenses
    describeEventTrackerResponse_eventTracker,
    describeEventTrackerResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeEventTracker' smart constructor.
data DescribeEventTracker = DescribeEventTracker'
  { -- | The Amazon Resource Name (ARN) of the event tracker to describe.
    DescribeEventTracker -> Text
eventTrackerArn :: Prelude.Text
  }
  deriving (DescribeEventTracker -> DescribeEventTracker -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEventTracker -> DescribeEventTracker -> Bool
$c/= :: DescribeEventTracker -> DescribeEventTracker -> Bool
== :: DescribeEventTracker -> DescribeEventTracker -> Bool
$c== :: DescribeEventTracker -> DescribeEventTracker -> Bool
Prelude.Eq, ReadPrec [DescribeEventTracker]
ReadPrec DescribeEventTracker
Int -> ReadS DescribeEventTracker
ReadS [DescribeEventTracker]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEventTracker]
$creadListPrec :: ReadPrec [DescribeEventTracker]
readPrec :: ReadPrec DescribeEventTracker
$creadPrec :: ReadPrec DescribeEventTracker
readList :: ReadS [DescribeEventTracker]
$creadList :: ReadS [DescribeEventTracker]
readsPrec :: Int -> ReadS DescribeEventTracker
$creadsPrec :: Int -> ReadS DescribeEventTracker
Prelude.Read, Int -> DescribeEventTracker -> ShowS
[DescribeEventTracker] -> ShowS
DescribeEventTracker -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEventTracker] -> ShowS
$cshowList :: [DescribeEventTracker] -> ShowS
show :: DescribeEventTracker -> String
$cshow :: DescribeEventTracker -> String
showsPrec :: Int -> DescribeEventTracker -> ShowS
$cshowsPrec :: Int -> DescribeEventTracker -> ShowS
Prelude.Show, forall x. Rep DescribeEventTracker x -> DescribeEventTracker
forall x. DescribeEventTracker -> Rep DescribeEventTracker x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeEventTracker x -> DescribeEventTracker
$cfrom :: forall x. DescribeEventTracker -> Rep DescribeEventTracker x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEventTracker' 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:
--
-- 'eventTrackerArn', 'describeEventTracker_eventTrackerArn' - The Amazon Resource Name (ARN) of the event tracker to describe.
newDescribeEventTracker ::
  -- | 'eventTrackerArn'
  Prelude.Text ->
  DescribeEventTracker
newDescribeEventTracker :: Text -> DescribeEventTracker
newDescribeEventTracker Text
pEventTrackerArn_ =
  DescribeEventTracker'
    { $sel:eventTrackerArn:DescribeEventTracker' :: Text
eventTrackerArn =
        Text
pEventTrackerArn_
    }

-- | The Amazon Resource Name (ARN) of the event tracker to describe.
describeEventTracker_eventTrackerArn :: Lens.Lens' DescribeEventTracker Prelude.Text
describeEventTracker_eventTrackerArn :: Lens' DescribeEventTracker Text
describeEventTracker_eventTrackerArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEventTracker' {Text
eventTrackerArn :: Text
$sel:eventTrackerArn:DescribeEventTracker' :: DescribeEventTracker -> Text
eventTrackerArn} -> Text
eventTrackerArn) (\s :: DescribeEventTracker
s@DescribeEventTracker' {} Text
a -> DescribeEventTracker
s {$sel:eventTrackerArn:DescribeEventTracker' :: Text
eventTrackerArn = Text
a} :: DescribeEventTracker)

instance Core.AWSRequest DescribeEventTracker where
  type
    AWSResponse DescribeEventTracker =
      DescribeEventTrackerResponse
  request :: (Service -> Service)
-> DescribeEventTracker -> Request DescribeEventTracker
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 DescribeEventTracker
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeEventTracker)))
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 EventTracker -> Int -> DescribeEventTrackerResponse
DescribeEventTrackerResponse'
            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
"eventTracker")
            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 DescribeEventTracker where
  hashWithSalt :: Int -> DescribeEventTracker -> Int
hashWithSalt Int
_salt DescribeEventTracker' {Text
eventTrackerArn :: Text
$sel:eventTrackerArn:DescribeEventTracker' :: DescribeEventTracker -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
eventTrackerArn

instance Prelude.NFData DescribeEventTracker where
  rnf :: DescribeEventTracker -> ()
rnf DescribeEventTracker' {Text
eventTrackerArn :: Text
$sel:eventTrackerArn:DescribeEventTracker' :: DescribeEventTracker -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
eventTrackerArn

instance Data.ToHeaders DescribeEventTracker where
  toHeaders :: DescribeEventTracker -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AmazonPersonalize.DescribeEventTracker" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeEventTracker where
  toJSON :: DescribeEventTracker -> Value
toJSON DescribeEventTracker' {Text
eventTrackerArn :: Text
$sel:eventTrackerArn:DescribeEventTracker' :: DescribeEventTracker -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"eventTrackerArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
eventTrackerArn)
          ]
      )

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

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

-- | /See:/ 'newDescribeEventTrackerResponse' smart constructor.
data DescribeEventTrackerResponse = DescribeEventTrackerResponse'
  { -- | An object that describes the event tracker.
    DescribeEventTrackerResponse -> Maybe EventTracker
eventTracker :: Prelude.Maybe EventTracker,
    -- | The response's http status code.
    DescribeEventTrackerResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeEventTrackerResponse
-> DescribeEventTrackerResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEventTrackerResponse
-> DescribeEventTrackerResponse -> Bool
$c/= :: DescribeEventTrackerResponse
-> DescribeEventTrackerResponse -> Bool
== :: DescribeEventTrackerResponse
-> DescribeEventTrackerResponse -> Bool
$c== :: DescribeEventTrackerResponse
-> DescribeEventTrackerResponse -> Bool
Prelude.Eq, ReadPrec [DescribeEventTrackerResponse]
ReadPrec DescribeEventTrackerResponse
Int -> ReadS DescribeEventTrackerResponse
ReadS [DescribeEventTrackerResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEventTrackerResponse]
$creadListPrec :: ReadPrec [DescribeEventTrackerResponse]
readPrec :: ReadPrec DescribeEventTrackerResponse
$creadPrec :: ReadPrec DescribeEventTrackerResponse
readList :: ReadS [DescribeEventTrackerResponse]
$creadList :: ReadS [DescribeEventTrackerResponse]
readsPrec :: Int -> ReadS DescribeEventTrackerResponse
$creadsPrec :: Int -> ReadS DescribeEventTrackerResponse
Prelude.Read, Int -> DescribeEventTrackerResponse -> ShowS
[DescribeEventTrackerResponse] -> ShowS
DescribeEventTrackerResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEventTrackerResponse] -> ShowS
$cshowList :: [DescribeEventTrackerResponse] -> ShowS
show :: DescribeEventTrackerResponse -> String
$cshow :: DescribeEventTrackerResponse -> String
showsPrec :: Int -> DescribeEventTrackerResponse -> ShowS
$cshowsPrec :: Int -> DescribeEventTrackerResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeEventTrackerResponse x -> DescribeEventTrackerResponse
forall x.
DescribeEventTrackerResponse -> Rep DescribeEventTrackerResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeEventTrackerResponse x -> DescribeEventTrackerResponse
$cfrom :: forall x.
DescribeEventTrackerResponse -> Rep DescribeEventTrackerResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEventTrackerResponse' 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:
--
-- 'eventTracker', 'describeEventTrackerResponse_eventTracker' - An object that describes the event tracker.
--
-- 'httpStatus', 'describeEventTrackerResponse_httpStatus' - The response's http status code.
newDescribeEventTrackerResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeEventTrackerResponse
newDescribeEventTrackerResponse :: Int -> DescribeEventTrackerResponse
newDescribeEventTrackerResponse Int
pHttpStatus_ =
  DescribeEventTrackerResponse'
    { $sel:eventTracker:DescribeEventTrackerResponse' :: Maybe EventTracker
eventTracker =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeEventTrackerResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | An object that describes the event tracker.
describeEventTrackerResponse_eventTracker :: Lens.Lens' DescribeEventTrackerResponse (Prelude.Maybe EventTracker)
describeEventTrackerResponse_eventTracker :: Lens' DescribeEventTrackerResponse (Maybe EventTracker)
describeEventTrackerResponse_eventTracker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEventTrackerResponse' {Maybe EventTracker
eventTracker :: Maybe EventTracker
$sel:eventTracker:DescribeEventTrackerResponse' :: DescribeEventTrackerResponse -> Maybe EventTracker
eventTracker} -> Maybe EventTracker
eventTracker) (\s :: DescribeEventTrackerResponse
s@DescribeEventTrackerResponse' {} Maybe EventTracker
a -> DescribeEventTrackerResponse
s {$sel:eventTracker:DescribeEventTrackerResponse' :: Maybe EventTracker
eventTracker = Maybe EventTracker
a} :: DescribeEventTrackerResponse)

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

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