{-# 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.Detective.BatchGetMembershipDatasources
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets information on the data source package history for an account.
module Amazonka.Detective.BatchGetMembershipDatasources
  ( -- * Creating a Request
    BatchGetMembershipDatasources (..),
    newBatchGetMembershipDatasources,

    -- * Request Lenses
    batchGetMembershipDatasources_graphArns,

    -- * Destructuring the Response
    BatchGetMembershipDatasourcesResponse (..),
    newBatchGetMembershipDatasourcesResponse,

    -- * Response Lenses
    batchGetMembershipDatasourcesResponse_membershipDatasources,
    batchGetMembershipDatasourcesResponse_unprocessedGraphs,
    batchGetMembershipDatasourcesResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'BatchGetMembershipDatasources' 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:
--
-- 'graphArns', 'batchGetMembershipDatasources_graphArns' - The ARN of the behavior graph.
newBatchGetMembershipDatasources ::
  -- | 'graphArns'
  Prelude.NonEmpty Prelude.Text ->
  BatchGetMembershipDatasources
newBatchGetMembershipDatasources :: NonEmpty Text -> BatchGetMembershipDatasources
newBatchGetMembershipDatasources NonEmpty Text
pGraphArns_ =
  BatchGetMembershipDatasources'
    { $sel:graphArns:BatchGetMembershipDatasources' :: NonEmpty Text
graphArns =
        forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced forall t b. AReview t b -> b -> t
Lens.# NonEmpty Text
pGraphArns_
    }

-- | The ARN of the behavior graph.
batchGetMembershipDatasources_graphArns :: Lens.Lens' BatchGetMembershipDatasources (Prelude.NonEmpty Prelude.Text)
batchGetMembershipDatasources_graphArns :: Lens' BatchGetMembershipDatasources (NonEmpty Text)
batchGetMembershipDatasources_graphArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchGetMembershipDatasources' {NonEmpty Text
graphArns :: NonEmpty Text
$sel:graphArns:BatchGetMembershipDatasources' :: BatchGetMembershipDatasources -> NonEmpty Text
graphArns} -> NonEmpty Text
graphArns) (\s :: BatchGetMembershipDatasources
s@BatchGetMembershipDatasources' {} NonEmpty Text
a -> BatchGetMembershipDatasources
s {$sel:graphArns:BatchGetMembershipDatasources' :: NonEmpty Text
graphArns = NonEmpty Text
a} :: BatchGetMembershipDatasources) 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
  Core.AWSRequest
    BatchGetMembershipDatasources
  where
  type
    AWSResponse BatchGetMembershipDatasources =
      BatchGetMembershipDatasourcesResponse
  request :: (Service -> Service)
-> BatchGetMembershipDatasources
-> Request BatchGetMembershipDatasources
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 BatchGetMembershipDatasources
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse BatchGetMembershipDatasources)))
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 [MembershipDatasources]
-> Maybe [UnprocessedGraph]
-> Int
-> BatchGetMembershipDatasourcesResponse
BatchGetMembershipDatasourcesResponse'
            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
"MembershipDatasources"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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
"UnprocessedGraphs"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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
    BatchGetMembershipDatasources
  where
  hashWithSalt :: Int -> BatchGetMembershipDatasources -> Int
hashWithSalt Int
_salt BatchGetMembershipDatasources' {NonEmpty Text
graphArns :: NonEmpty Text
$sel:graphArns:BatchGetMembershipDatasources' :: BatchGetMembershipDatasources -> NonEmpty Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty Text
graphArns

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

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

instance Data.ToPath BatchGetMembershipDatasources where
  toPath :: BatchGetMembershipDatasources -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/membership/datasources/get"

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

-- | /See:/ 'newBatchGetMembershipDatasourcesResponse' smart constructor.
data BatchGetMembershipDatasourcesResponse = BatchGetMembershipDatasourcesResponse'
  { -- | Details on the data source package history for an member of the behavior
    -- graph.
    BatchGetMembershipDatasourcesResponse
-> Maybe [MembershipDatasources]
membershipDatasources :: Prelude.Maybe [MembershipDatasources],
    -- | Graphs that data source package information could not be retrieved for.
    BatchGetMembershipDatasourcesResponse -> Maybe [UnprocessedGraph]
unprocessedGraphs :: Prelude.Maybe [UnprocessedGraph],
    -- | The response's http status code.
    BatchGetMembershipDatasourcesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (BatchGetMembershipDatasourcesResponse
-> BatchGetMembershipDatasourcesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BatchGetMembershipDatasourcesResponse
-> BatchGetMembershipDatasourcesResponse -> Bool
$c/= :: BatchGetMembershipDatasourcesResponse
-> BatchGetMembershipDatasourcesResponse -> Bool
== :: BatchGetMembershipDatasourcesResponse
-> BatchGetMembershipDatasourcesResponse -> Bool
$c== :: BatchGetMembershipDatasourcesResponse
-> BatchGetMembershipDatasourcesResponse -> Bool
Prelude.Eq, ReadPrec [BatchGetMembershipDatasourcesResponse]
ReadPrec BatchGetMembershipDatasourcesResponse
Int -> ReadS BatchGetMembershipDatasourcesResponse
ReadS [BatchGetMembershipDatasourcesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [BatchGetMembershipDatasourcesResponse]
$creadListPrec :: ReadPrec [BatchGetMembershipDatasourcesResponse]
readPrec :: ReadPrec BatchGetMembershipDatasourcesResponse
$creadPrec :: ReadPrec BatchGetMembershipDatasourcesResponse
readList :: ReadS [BatchGetMembershipDatasourcesResponse]
$creadList :: ReadS [BatchGetMembershipDatasourcesResponse]
readsPrec :: Int -> ReadS BatchGetMembershipDatasourcesResponse
$creadsPrec :: Int -> ReadS BatchGetMembershipDatasourcesResponse
Prelude.Read, Int -> BatchGetMembershipDatasourcesResponse -> ShowS
[BatchGetMembershipDatasourcesResponse] -> ShowS
BatchGetMembershipDatasourcesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BatchGetMembershipDatasourcesResponse] -> ShowS
$cshowList :: [BatchGetMembershipDatasourcesResponse] -> ShowS
show :: BatchGetMembershipDatasourcesResponse -> String
$cshow :: BatchGetMembershipDatasourcesResponse -> String
showsPrec :: Int -> BatchGetMembershipDatasourcesResponse -> ShowS
$cshowsPrec :: Int -> BatchGetMembershipDatasourcesResponse -> ShowS
Prelude.Show, forall x.
Rep BatchGetMembershipDatasourcesResponse x
-> BatchGetMembershipDatasourcesResponse
forall x.
BatchGetMembershipDatasourcesResponse
-> Rep BatchGetMembershipDatasourcesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep BatchGetMembershipDatasourcesResponse x
-> BatchGetMembershipDatasourcesResponse
$cfrom :: forall x.
BatchGetMembershipDatasourcesResponse
-> Rep BatchGetMembershipDatasourcesResponse x
Prelude.Generic)

-- |
-- Create a value of 'BatchGetMembershipDatasourcesResponse' 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:
--
-- 'membershipDatasources', 'batchGetMembershipDatasourcesResponse_membershipDatasources' - Details on the data source package history for an member of the behavior
-- graph.
--
-- 'unprocessedGraphs', 'batchGetMembershipDatasourcesResponse_unprocessedGraphs' - Graphs that data source package information could not be retrieved for.
--
-- 'httpStatus', 'batchGetMembershipDatasourcesResponse_httpStatus' - The response's http status code.
newBatchGetMembershipDatasourcesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  BatchGetMembershipDatasourcesResponse
newBatchGetMembershipDatasourcesResponse :: Int -> BatchGetMembershipDatasourcesResponse
newBatchGetMembershipDatasourcesResponse Int
pHttpStatus_ =
  BatchGetMembershipDatasourcesResponse'
    { $sel:membershipDatasources:BatchGetMembershipDatasourcesResponse' :: Maybe [MembershipDatasources]
membershipDatasources =
        forall a. Maybe a
Prelude.Nothing,
      $sel:unprocessedGraphs:BatchGetMembershipDatasourcesResponse' :: Maybe [UnprocessedGraph]
unprocessedGraphs = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:BatchGetMembershipDatasourcesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Details on the data source package history for an member of the behavior
-- graph.
batchGetMembershipDatasourcesResponse_membershipDatasources :: Lens.Lens' BatchGetMembershipDatasourcesResponse (Prelude.Maybe [MembershipDatasources])
batchGetMembershipDatasourcesResponse_membershipDatasources :: Lens'
  BatchGetMembershipDatasourcesResponse
  (Maybe [MembershipDatasources])
batchGetMembershipDatasourcesResponse_membershipDatasources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchGetMembershipDatasourcesResponse' {Maybe [MembershipDatasources]
membershipDatasources :: Maybe [MembershipDatasources]
$sel:membershipDatasources:BatchGetMembershipDatasourcesResponse' :: BatchGetMembershipDatasourcesResponse
-> Maybe [MembershipDatasources]
membershipDatasources} -> Maybe [MembershipDatasources]
membershipDatasources) (\s :: BatchGetMembershipDatasourcesResponse
s@BatchGetMembershipDatasourcesResponse' {} Maybe [MembershipDatasources]
a -> BatchGetMembershipDatasourcesResponse
s {$sel:membershipDatasources:BatchGetMembershipDatasourcesResponse' :: Maybe [MembershipDatasources]
membershipDatasources = Maybe [MembershipDatasources]
a} :: BatchGetMembershipDatasourcesResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Graphs that data source package information could not be retrieved for.
batchGetMembershipDatasourcesResponse_unprocessedGraphs :: Lens.Lens' BatchGetMembershipDatasourcesResponse (Prelude.Maybe [UnprocessedGraph])
batchGetMembershipDatasourcesResponse_unprocessedGraphs :: Lens'
  BatchGetMembershipDatasourcesResponse (Maybe [UnprocessedGraph])
batchGetMembershipDatasourcesResponse_unprocessedGraphs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchGetMembershipDatasourcesResponse' {Maybe [UnprocessedGraph]
unprocessedGraphs :: Maybe [UnprocessedGraph]
$sel:unprocessedGraphs:BatchGetMembershipDatasourcesResponse' :: BatchGetMembershipDatasourcesResponse -> Maybe [UnprocessedGraph]
unprocessedGraphs} -> Maybe [UnprocessedGraph]
unprocessedGraphs) (\s :: BatchGetMembershipDatasourcesResponse
s@BatchGetMembershipDatasourcesResponse' {} Maybe [UnprocessedGraph]
a -> BatchGetMembershipDatasourcesResponse
s {$sel:unprocessedGraphs:BatchGetMembershipDatasourcesResponse' :: Maybe [UnprocessedGraph]
unprocessedGraphs = Maybe [UnprocessedGraph]
a} :: BatchGetMembershipDatasourcesResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance
  Prelude.NFData
    BatchGetMembershipDatasourcesResponse
  where
  rnf :: BatchGetMembershipDatasourcesResponse -> ()
rnf BatchGetMembershipDatasourcesResponse' {Int
Maybe [MembershipDatasources]
Maybe [UnprocessedGraph]
httpStatus :: Int
unprocessedGraphs :: Maybe [UnprocessedGraph]
membershipDatasources :: Maybe [MembershipDatasources]
$sel:httpStatus:BatchGetMembershipDatasourcesResponse' :: BatchGetMembershipDatasourcesResponse -> Int
$sel:unprocessedGraphs:BatchGetMembershipDatasourcesResponse' :: BatchGetMembershipDatasourcesResponse -> Maybe [UnprocessedGraph]
$sel:membershipDatasources:BatchGetMembershipDatasourcesResponse' :: BatchGetMembershipDatasourcesResponse
-> Maybe [MembershipDatasources]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [MembershipDatasources]
membershipDatasources
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [UnprocessedGraph]
unprocessedGraphs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus