{-# 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.CloudWatchEvents.DescribePartnerEventSource
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- An SaaS partner can use this operation to list details about a partner
-- event source that they have created. Amazon Web Services customers do
-- not use this operation. Instead, Amazon Web Services customers can use
-- <https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_DescribeEventSource.html DescribeEventSource>
-- to see details about a partner event source that is shared with them.
module Amazonka.CloudWatchEvents.DescribePartnerEventSource
  ( -- * Creating a Request
    DescribePartnerEventSource (..),
    newDescribePartnerEventSource,

    -- * Request Lenses
    describePartnerEventSource_name,

    -- * Destructuring the Response
    DescribePartnerEventSourceResponse (..),
    newDescribePartnerEventSourceResponse,

    -- * Response Lenses
    describePartnerEventSourceResponse_arn,
    describePartnerEventSourceResponse_name,
    describePartnerEventSourceResponse_httpStatus,
  )
where

import Amazonka.CloudWatchEvents.Types
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

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

-- |
-- Create a value of 'DescribePartnerEventSource' 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:
--
-- 'name', 'describePartnerEventSource_name' - The name of the event source to display.
newDescribePartnerEventSource ::
  -- | 'name'
  Prelude.Text ->
  DescribePartnerEventSource
newDescribePartnerEventSource :: Text -> DescribePartnerEventSource
newDescribePartnerEventSource Text
pName_ =
  DescribePartnerEventSource' {$sel:name:DescribePartnerEventSource' :: Text
name = Text
pName_}

-- | The name of the event source to display.
describePartnerEventSource_name :: Lens.Lens' DescribePartnerEventSource Prelude.Text
describePartnerEventSource_name :: Lens' DescribePartnerEventSource Text
describePartnerEventSource_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribePartnerEventSource' {Text
name :: Text
$sel:name:DescribePartnerEventSource' :: DescribePartnerEventSource -> Text
name} -> Text
name) (\s :: DescribePartnerEventSource
s@DescribePartnerEventSource' {} Text
a -> DescribePartnerEventSource
s {$sel:name:DescribePartnerEventSource' :: Text
name = Text
a} :: DescribePartnerEventSource)

instance Core.AWSRequest DescribePartnerEventSource where
  type
    AWSResponse DescribePartnerEventSource =
      DescribePartnerEventSourceResponse
  request :: (Service -> Service)
-> DescribePartnerEventSource -> Request DescribePartnerEventSource
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 DescribePartnerEventSource
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribePartnerEventSource)))
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 Text
-> Maybe Text -> Int -> DescribePartnerEventSourceResponse
DescribePartnerEventSourceResponse'
            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
"Arn")
            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
"Name")
            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 DescribePartnerEventSource where
  hashWithSalt :: Int -> DescribePartnerEventSource -> Int
hashWithSalt Int
_salt DescribePartnerEventSource' {Text
name :: Text
$sel:name:DescribePartnerEventSource' :: DescribePartnerEventSource -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

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

instance Data.ToHeaders DescribePartnerEventSource where
  toHeaders :: DescribePartnerEventSource -> 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
"AWSEvents.DescribePartnerEventSource" ::
                          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 DescribePartnerEventSource where
  toJSON :: DescribePartnerEventSource -> Value
toJSON DescribePartnerEventSource' {Text
name :: Text
$sel:name:DescribePartnerEventSource' :: DescribePartnerEventSource -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name)]
      )

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

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

-- | /See:/ 'newDescribePartnerEventSourceResponse' smart constructor.
data DescribePartnerEventSourceResponse = DescribePartnerEventSourceResponse'
  { -- | The ARN of the event source.
    DescribePartnerEventSourceResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The name of the event source.
    DescribePartnerEventSourceResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribePartnerEventSourceResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribePartnerEventSourceResponse
-> DescribePartnerEventSourceResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribePartnerEventSourceResponse
-> DescribePartnerEventSourceResponse -> Bool
$c/= :: DescribePartnerEventSourceResponse
-> DescribePartnerEventSourceResponse -> Bool
== :: DescribePartnerEventSourceResponse
-> DescribePartnerEventSourceResponse -> Bool
$c== :: DescribePartnerEventSourceResponse
-> DescribePartnerEventSourceResponse -> Bool
Prelude.Eq, ReadPrec [DescribePartnerEventSourceResponse]
ReadPrec DescribePartnerEventSourceResponse
Int -> ReadS DescribePartnerEventSourceResponse
ReadS [DescribePartnerEventSourceResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribePartnerEventSourceResponse]
$creadListPrec :: ReadPrec [DescribePartnerEventSourceResponse]
readPrec :: ReadPrec DescribePartnerEventSourceResponse
$creadPrec :: ReadPrec DescribePartnerEventSourceResponse
readList :: ReadS [DescribePartnerEventSourceResponse]
$creadList :: ReadS [DescribePartnerEventSourceResponse]
readsPrec :: Int -> ReadS DescribePartnerEventSourceResponse
$creadsPrec :: Int -> ReadS DescribePartnerEventSourceResponse
Prelude.Read, Int -> DescribePartnerEventSourceResponse -> ShowS
[DescribePartnerEventSourceResponse] -> ShowS
DescribePartnerEventSourceResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribePartnerEventSourceResponse] -> ShowS
$cshowList :: [DescribePartnerEventSourceResponse] -> ShowS
show :: DescribePartnerEventSourceResponse -> String
$cshow :: DescribePartnerEventSourceResponse -> String
showsPrec :: Int -> DescribePartnerEventSourceResponse -> ShowS
$cshowsPrec :: Int -> DescribePartnerEventSourceResponse -> ShowS
Prelude.Show, forall x.
Rep DescribePartnerEventSourceResponse x
-> DescribePartnerEventSourceResponse
forall x.
DescribePartnerEventSourceResponse
-> Rep DescribePartnerEventSourceResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribePartnerEventSourceResponse x
-> DescribePartnerEventSourceResponse
$cfrom :: forall x.
DescribePartnerEventSourceResponse
-> Rep DescribePartnerEventSourceResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribePartnerEventSourceResponse' 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:
--
-- 'arn', 'describePartnerEventSourceResponse_arn' - The ARN of the event source.
--
-- 'name', 'describePartnerEventSourceResponse_name' - The name of the event source.
--
-- 'httpStatus', 'describePartnerEventSourceResponse_httpStatus' - The response's http status code.
newDescribePartnerEventSourceResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribePartnerEventSourceResponse
newDescribePartnerEventSourceResponse :: Int -> DescribePartnerEventSourceResponse
newDescribePartnerEventSourceResponse Int
pHttpStatus_ =
  DescribePartnerEventSourceResponse'
    { $sel:arn:DescribePartnerEventSourceResponse' :: Maybe Text
arn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:name:DescribePartnerEventSourceResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribePartnerEventSourceResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN of the event source.
describePartnerEventSourceResponse_arn :: Lens.Lens' DescribePartnerEventSourceResponse (Prelude.Maybe Prelude.Text)
describePartnerEventSourceResponse_arn :: Lens' DescribePartnerEventSourceResponse (Maybe Text)
describePartnerEventSourceResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribePartnerEventSourceResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:DescribePartnerEventSourceResponse' :: DescribePartnerEventSourceResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: DescribePartnerEventSourceResponse
s@DescribePartnerEventSourceResponse' {} Maybe Text
a -> DescribePartnerEventSourceResponse
s {$sel:arn:DescribePartnerEventSourceResponse' :: Maybe Text
arn = Maybe Text
a} :: DescribePartnerEventSourceResponse)

-- | The name of the event source.
describePartnerEventSourceResponse_name :: Lens.Lens' DescribePartnerEventSourceResponse (Prelude.Maybe Prelude.Text)
describePartnerEventSourceResponse_name :: Lens' DescribePartnerEventSourceResponse (Maybe Text)
describePartnerEventSourceResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribePartnerEventSourceResponse' {Maybe Text
name :: Maybe Text
$sel:name:DescribePartnerEventSourceResponse' :: DescribePartnerEventSourceResponse -> Maybe Text
name} -> Maybe Text
name) (\s :: DescribePartnerEventSourceResponse
s@DescribePartnerEventSourceResponse' {} Maybe Text
a -> DescribePartnerEventSourceResponse
s {$sel:name:DescribePartnerEventSourceResponse' :: Maybe Text
name = Maybe Text
a} :: DescribePartnerEventSourceResponse)

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

instance
  Prelude.NFData
    DescribePartnerEventSourceResponse
  where
  rnf :: DescribePartnerEventSourceResponse -> ()
rnf DescribePartnerEventSourceResponse' {Int
Maybe Text
httpStatus :: Int
name :: Maybe Text
arn :: Maybe Text
$sel:httpStatus:DescribePartnerEventSourceResponse' :: DescribePartnerEventSourceResponse -> Int
$sel:name:DescribePartnerEventSourceResponse' :: DescribePartnerEventSourceResponse -> Maybe Text
$sel:arn:DescribePartnerEventSourceResponse' :: DescribePartnerEventSourceResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus