{-# 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.Redshift.DescribeDataSharesForConsumer
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns a list of datashares where the account identifier being called
-- is a consumer account identifier.
--
-- This operation returns paginated results.
module Amazonka.Redshift.DescribeDataSharesForConsumer
  ( -- * Creating a Request
    DescribeDataSharesForConsumer (..),
    newDescribeDataSharesForConsumer,

    -- * Request Lenses
    describeDataSharesForConsumer_consumerArn,
    describeDataSharesForConsumer_marker,
    describeDataSharesForConsumer_maxRecords,
    describeDataSharesForConsumer_status,

    -- * Destructuring the Response
    DescribeDataSharesForConsumerResponse (..),
    newDescribeDataSharesForConsumerResponse,

    -- * Response Lenses
    describeDataSharesForConsumerResponse_dataShares,
    describeDataSharesForConsumerResponse_marker,
    describeDataSharesForConsumerResponse_httpStatus,
  )
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.Redshift.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeDataSharesForConsumer' smart constructor.
data DescribeDataSharesForConsumer = DescribeDataSharesForConsumer'
  { -- | The Amazon Resource Name (ARN) of the consumer that returns in the list
    -- of datashares.
    DescribeDataSharesForConsumer -> Maybe Text
consumerArn :: Prelude.Maybe Prelude.Text,
    -- | An optional parameter that specifies the starting point to return a set
    -- of response records. When the results of a DescribeDataSharesForConsumer
    -- request exceed the value specified in @MaxRecords@, Amazon Web Services
    -- returns a value in the @Marker@ field of the response. You can retrieve
    -- the next set of response records by providing the returned marker value
    -- in the @Marker@ parameter and retrying the request.
    DescribeDataSharesForConsumer -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of response records to return in each call. If the
    -- number of remaining response records exceeds the specified @MaxRecords@
    -- value, a value is returned in a @marker@ field of the response. You can
    -- retrieve the next set of records by retrying the command with the
    -- returned marker value.
    DescribeDataSharesForConsumer -> Maybe Int
maxRecords :: Prelude.Maybe Prelude.Int,
    -- | An identifier giving the status of a datashare in the consumer cluster.
    -- If this field is specified, Amazon Redshift returns the list of
    -- datashares that have the specified status.
    DescribeDataSharesForConsumer -> Maybe DataShareStatusForConsumer
status :: Prelude.Maybe DataShareStatusForConsumer
  }
  deriving (DescribeDataSharesForConsumer
-> DescribeDataSharesForConsumer -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDataSharesForConsumer
-> DescribeDataSharesForConsumer -> Bool
$c/= :: DescribeDataSharesForConsumer
-> DescribeDataSharesForConsumer -> Bool
== :: DescribeDataSharesForConsumer
-> DescribeDataSharesForConsumer -> Bool
$c== :: DescribeDataSharesForConsumer
-> DescribeDataSharesForConsumer -> Bool
Prelude.Eq, ReadPrec [DescribeDataSharesForConsumer]
ReadPrec DescribeDataSharesForConsumer
Int -> ReadS DescribeDataSharesForConsumer
ReadS [DescribeDataSharesForConsumer]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDataSharesForConsumer]
$creadListPrec :: ReadPrec [DescribeDataSharesForConsumer]
readPrec :: ReadPrec DescribeDataSharesForConsumer
$creadPrec :: ReadPrec DescribeDataSharesForConsumer
readList :: ReadS [DescribeDataSharesForConsumer]
$creadList :: ReadS [DescribeDataSharesForConsumer]
readsPrec :: Int -> ReadS DescribeDataSharesForConsumer
$creadsPrec :: Int -> ReadS DescribeDataSharesForConsumer
Prelude.Read, Int -> DescribeDataSharesForConsumer -> ShowS
[DescribeDataSharesForConsumer] -> ShowS
DescribeDataSharesForConsumer -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDataSharesForConsumer] -> ShowS
$cshowList :: [DescribeDataSharesForConsumer] -> ShowS
show :: DescribeDataSharesForConsumer -> String
$cshow :: DescribeDataSharesForConsumer -> String
showsPrec :: Int -> DescribeDataSharesForConsumer -> ShowS
$cshowsPrec :: Int -> DescribeDataSharesForConsumer -> ShowS
Prelude.Show, forall x.
Rep DescribeDataSharesForConsumer x
-> DescribeDataSharesForConsumer
forall x.
DescribeDataSharesForConsumer
-> Rep DescribeDataSharesForConsumer x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDataSharesForConsumer x
-> DescribeDataSharesForConsumer
$cfrom :: forall x.
DescribeDataSharesForConsumer
-> Rep DescribeDataSharesForConsumer x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDataSharesForConsumer' 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:
--
-- 'consumerArn', 'describeDataSharesForConsumer_consumerArn' - The Amazon Resource Name (ARN) of the consumer that returns in the list
-- of datashares.
--
-- 'marker', 'describeDataSharesForConsumer_marker' - An optional parameter that specifies the starting point to return a set
-- of response records. When the results of a DescribeDataSharesForConsumer
-- request exceed the value specified in @MaxRecords@, Amazon Web Services
-- returns a value in the @Marker@ field of the response. You can retrieve
-- the next set of response records by providing the returned marker value
-- in the @Marker@ parameter and retrying the request.
--
-- 'maxRecords', 'describeDataSharesForConsumer_maxRecords' - The maximum number of response records to return in each call. If the
-- number of remaining response records exceeds the specified @MaxRecords@
-- value, a value is returned in a @marker@ field of the response. You can
-- retrieve the next set of records by retrying the command with the
-- returned marker value.
--
-- 'status', 'describeDataSharesForConsumer_status' - An identifier giving the status of a datashare in the consumer cluster.
-- If this field is specified, Amazon Redshift returns the list of
-- datashares that have the specified status.
newDescribeDataSharesForConsumer ::
  DescribeDataSharesForConsumer
newDescribeDataSharesForConsumer :: DescribeDataSharesForConsumer
newDescribeDataSharesForConsumer =
  DescribeDataSharesForConsumer'
    { $sel:consumerArn:DescribeDataSharesForConsumer' :: Maybe Text
consumerArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeDataSharesForConsumer' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:maxRecords:DescribeDataSharesForConsumer' :: Maybe Int
maxRecords = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DescribeDataSharesForConsumer' :: Maybe DataShareStatusForConsumer
status = forall a. Maybe a
Prelude.Nothing
    }

-- | The Amazon Resource Name (ARN) of the consumer that returns in the list
-- of datashares.
describeDataSharesForConsumer_consumerArn :: Lens.Lens' DescribeDataSharesForConsumer (Prelude.Maybe Prelude.Text)
describeDataSharesForConsumer_consumerArn :: Lens' DescribeDataSharesForConsumer (Maybe Text)
describeDataSharesForConsumer_consumerArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDataSharesForConsumer' {Maybe Text
consumerArn :: Maybe Text
$sel:consumerArn:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Text
consumerArn} -> Maybe Text
consumerArn) (\s :: DescribeDataSharesForConsumer
s@DescribeDataSharesForConsumer' {} Maybe Text
a -> DescribeDataSharesForConsumer
s {$sel:consumerArn:DescribeDataSharesForConsumer' :: Maybe Text
consumerArn = Maybe Text
a} :: DescribeDataSharesForConsumer)

-- | An optional parameter that specifies the starting point to return a set
-- of response records. When the results of a DescribeDataSharesForConsumer
-- request exceed the value specified in @MaxRecords@, Amazon Web Services
-- returns a value in the @Marker@ field of the response. You can retrieve
-- the next set of response records by providing the returned marker value
-- in the @Marker@ parameter and retrying the request.
describeDataSharesForConsumer_marker :: Lens.Lens' DescribeDataSharesForConsumer (Prelude.Maybe Prelude.Text)
describeDataSharesForConsumer_marker :: Lens' DescribeDataSharesForConsumer (Maybe Text)
describeDataSharesForConsumer_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDataSharesForConsumer' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeDataSharesForConsumer
s@DescribeDataSharesForConsumer' {} Maybe Text
a -> DescribeDataSharesForConsumer
s {$sel:marker:DescribeDataSharesForConsumer' :: Maybe Text
marker = Maybe Text
a} :: DescribeDataSharesForConsumer)

-- | The maximum number of response records to return in each call. If the
-- number of remaining response records exceeds the specified @MaxRecords@
-- value, a value is returned in a @marker@ field of the response. You can
-- retrieve the next set of records by retrying the command with the
-- returned marker value.
describeDataSharesForConsumer_maxRecords :: Lens.Lens' DescribeDataSharesForConsumer (Prelude.Maybe Prelude.Int)
describeDataSharesForConsumer_maxRecords :: Lens' DescribeDataSharesForConsumer (Maybe Int)
describeDataSharesForConsumer_maxRecords = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDataSharesForConsumer' {Maybe Int
maxRecords :: Maybe Int
$sel:maxRecords:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Int
maxRecords} -> Maybe Int
maxRecords) (\s :: DescribeDataSharesForConsumer
s@DescribeDataSharesForConsumer' {} Maybe Int
a -> DescribeDataSharesForConsumer
s {$sel:maxRecords:DescribeDataSharesForConsumer' :: Maybe Int
maxRecords = Maybe Int
a} :: DescribeDataSharesForConsumer)

-- | An identifier giving the status of a datashare in the consumer cluster.
-- If this field is specified, Amazon Redshift returns the list of
-- datashares that have the specified status.
describeDataSharesForConsumer_status :: Lens.Lens' DescribeDataSharesForConsumer (Prelude.Maybe DataShareStatusForConsumer)
describeDataSharesForConsumer_status :: Lens'
  DescribeDataSharesForConsumer (Maybe DataShareStatusForConsumer)
describeDataSharesForConsumer_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDataSharesForConsumer' {Maybe DataShareStatusForConsumer
status :: Maybe DataShareStatusForConsumer
$sel:status:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe DataShareStatusForConsumer
status} -> Maybe DataShareStatusForConsumer
status) (\s :: DescribeDataSharesForConsumer
s@DescribeDataSharesForConsumer' {} Maybe DataShareStatusForConsumer
a -> DescribeDataSharesForConsumer
s {$sel:status:DescribeDataSharesForConsumer' :: Maybe DataShareStatusForConsumer
status = Maybe DataShareStatusForConsumer
a} :: DescribeDataSharesForConsumer)

instance Core.AWSPager DescribeDataSharesForConsumer where
  page :: DescribeDataSharesForConsumer
-> AWSResponse DescribeDataSharesForConsumer
-> Maybe DescribeDataSharesForConsumer
page DescribeDataSharesForConsumer
rq AWSResponse DescribeDataSharesForConsumer
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeDataSharesForConsumer
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDataSharesForConsumerResponse (Maybe Text)
describeDataSharesForConsumerResponse_marker
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeDataSharesForConsumer
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDataSharesForConsumerResponse (Maybe [DataShare])
describeDataSharesForConsumerResponse_dataShares
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeDataSharesForConsumer
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeDataSharesForConsumer (Maybe Text)
describeDataSharesForConsumer_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeDataSharesForConsumer
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeDataSharesForConsumerResponse (Maybe Text)
describeDataSharesForConsumerResponse_marker
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance
  Core.AWSRequest
    DescribeDataSharesForConsumer
  where
  type
    AWSResponse DescribeDataSharesForConsumer =
      DescribeDataSharesForConsumerResponse
  request :: (Service -> Service)
-> DescribeDataSharesForConsumer
-> Request DescribeDataSharesForConsumer
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeDataSharesForConsumer
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeDataSharesForConsumer)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"DescribeDataSharesForConsumerResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe [DataShare]
-> Maybe Text -> Int -> DescribeDataSharesForConsumerResponse
DescribeDataSharesForConsumerResponse'
            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
"DataShares"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Marker")
            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
    DescribeDataSharesForConsumer
  where
  hashWithSalt :: Int -> DescribeDataSharesForConsumer -> Int
hashWithSalt Int
_salt DescribeDataSharesForConsumer' {Maybe Int
Maybe Text
Maybe DataShareStatusForConsumer
status :: Maybe DataShareStatusForConsumer
maxRecords :: Maybe Int
marker :: Maybe Text
consumerArn :: Maybe Text
$sel:status:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe DataShareStatusForConsumer
$sel:maxRecords:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Int
$sel:marker:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Text
$sel:consumerArn:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
consumerArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxRecords
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataShareStatusForConsumer
status

instance Prelude.NFData DescribeDataSharesForConsumer where
  rnf :: DescribeDataSharesForConsumer -> ()
rnf DescribeDataSharesForConsumer' {Maybe Int
Maybe Text
Maybe DataShareStatusForConsumer
status :: Maybe DataShareStatusForConsumer
maxRecords :: Maybe Int
marker :: Maybe Text
consumerArn :: Maybe Text
$sel:status:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe DataShareStatusForConsumer
$sel:maxRecords:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Int
$sel:marker:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Text
$sel:consumerArn:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
consumerArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxRecords
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataShareStatusForConsumer
status

instance Data.ToHeaders DescribeDataSharesForConsumer where
  toHeaders :: DescribeDataSharesForConsumer -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

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

instance Data.ToQuery DescribeDataSharesForConsumer where
  toQuery :: DescribeDataSharesForConsumer -> QueryString
toQuery DescribeDataSharesForConsumer' {Maybe Int
Maybe Text
Maybe DataShareStatusForConsumer
status :: Maybe DataShareStatusForConsumer
maxRecords :: Maybe Int
marker :: Maybe Text
consumerArn :: Maybe Text
$sel:status:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe DataShareStatusForConsumer
$sel:maxRecords:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Int
$sel:marker:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Text
$sel:consumerArn:DescribeDataSharesForConsumer' :: DescribeDataSharesForConsumer -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeDataSharesForConsumer" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2012-12-01" :: Prelude.ByteString),
        ByteString
"ConsumerArn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
consumerArn,
        ByteString
"Marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
        ByteString
"MaxRecords" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxRecords,
        ByteString
"Status" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DataShareStatusForConsumer
status
      ]

-- | /See:/ 'newDescribeDataSharesForConsumerResponse' smart constructor.
data DescribeDataSharesForConsumerResponse = DescribeDataSharesForConsumerResponse'
  { -- | Shows the results of datashares available for consumers.
    DescribeDataSharesForConsumerResponse -> Maybe [DataShare]
dataShares :: Prelude.Maybe [DataShare],
    -- | An optional parameter that specifies the starting point to return a set
    -- of response records. When the results of a DescribeDataSharesForConsumer
    -- request exceed the value specified in @MaxRecords@, Amazon Web Services
    -- returns a value in the @Marker@ field of the response. You can retrieve
    -- the next set of response records by providing the returned marker value
    -- in the @Marker@ parameter and retrying the request.
    DescribeDataSharesForConsumerResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeDataSharesForConsumerResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeDataSharesForConsumerResponse
-> DescribeDataSharesForConsumerResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeDataSharesForConsumerResponse
-> DescribeDataSharesForConsumerResponse -> Bool
$c/= :: DescribeDataSharesForConsumerResponse
-> DescribeDataSharesForConsumerResponse -> Bool
== :: DescribeDataSharesForConsumerResponse
-> DescribeDataSharesForConsumerResponse -> Bool
$c== :: DescribeDataSharesForConsumerResponse
-> DescribeDataSharesForConsumerResponse -> Bool
Prelude.Eq, ReadPrec [DescribeDataSharesForConsumerResponse]
ReadPrec DescribeDataSharesForConsumerResponse
Int -> ReadS DescribeDataSharesForConsumerResponse
ReadS [DescribeDataSharesForConsumerResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeDataSharesForConsumerResponse]
$creadListPrec :: ReadPrec [DescribeDataSharesForConsumerResponse]
readPrec :: ReadPrec DescribeDataSharesForConsumerResponse
$creadPrec :: ReadPrec DescribeDataSharesForConsumerResponse
readList :: ReadS [DescribeDataSharesForConsumerResponse]
$creadList :: ReadS [DescribeDataSharesForConsumerResponse]
readsPrec :: Int -> ReadS DescribeDataSharesForConsumerResponse
$creadsPrec :: Int -> ReadS DescribeDataSharesForConsumerResponse
Prelude.Read, Int -> DescribeDataSharesForConsumerResponse -> ShowS
[DescribeDataSharesForConsumerResponse] -> ShowS
DescribeDataSharesForConsumerResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeDataSharesForConsumerResponse] -> ShowS
$cshowList :: [DescribeDataSharesForConsumerResponse] -> ShowS
show :: DescribeDataSharesForConsumerResponse -> String
$cshow :: DescribeDataSharesForConsumerResponse -> String
showsPrec :: Int -> DescribeDataSharesForConsumerResponse -> ShowS
$cshowsPrec :: Int -> DescribeDataSharesForConsumerResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeDataSharesForConsumerResponse x
-> DescribeDataSharesForConsumerResponse
forall x.
DescribeDataSharesForConsumerResponse
-> Rep DescribeDataSharesForConsumerResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeDataSharesForConsumerResponse x
-> DescribeDataSharesForConsumerResponse
$cfrom :: forall x.
DescribeDataSharesForConsumerResponse
-> Rep DescribeDataSharesForConsumerResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeDataSharesForConsumerResponse' 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:
--
-- 'dataShares', 'describeDataSharesForConsumerResponse_dataShares' - Shows the results of datashares available for consumers.
--
-- 'marker', 'describeDataSharesForConsumerResponse_marker' - An optional parameter that specifies the starting point to return a set
-- of response records. When the results of a DescribeDataSharesForConsumer
-- request exceed the value specified in @MaxRecords@, Amazon Web Services
-- returns a value in the @Marker@ field of the response. You can retrieve
-- the next set of response records by providing the returned marker value
-- in the @Marker@ parameter and retrying the request.
--
-- 'httpStatus', 'describeDataSharesForConsumerResponse_httpStatus' - The response's http status code.
newDescribeDataSharesForConsumerResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeDataSharesForConsumerResponse
newDescribeDataSharesForConsumerResponse :: Int -> DescribeDataSharesForConsumerResponse
newDescribeDataSharesForConsumerResponse Int
pHttpStatus_ =
  DescribeDataSharesForConsumerResponse'
    { $sel:dataShares:DescribeDataSharesForConsumerResponse' :: Maybe [DataShare]
dataShares =
        forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeDataSharesForConsumerResponse' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeDataSharesForConsumerResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Shows the results of datashares available for consumers.
describeDataSharesForConsumerResponse_dataShares :: Lens.Lens' DescribeDataSharesForConsumerResponse (Prelude.Maybe [DataShare])
describeDataSharesForConsumerResponse_dataShares :: Lens' DescribeDataSharesForConsumerResponse (Maybe [DataShare])
describeDataSharesForConsumerResponse_dataShares = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDataSharesForConsumerResponse' {Maybe [DataShare]
dataShares :: Maybe [DataShare]
$sel:dataShares:DescribeDataSharesForConsumerResponse' :: DescribeDataSharesForConsumerResponse -> Maybe [DataShare]
dataShares} -> Maybe [DataShare]
dataShares) (\s :: DescribeDataSharesForConsumerResponse
s@DescribeDataSharesForConsumerResponse' {} Maybe [DataShare]
a -> DescribeDataSharesForConsumerResponse
s {$sel:dataShares:DescribeDataSharesForConsumerResponse' :: Maybe [DataShare]
dataShares = Maybe [DataShare]
a} :: DescribeDataSharesForConsumerResponse) 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

-- | An optional parameter that specifies the starting point to return a set
-- of response records. When the results of a DescribeDataSharesForConsumer
-- request exceed the value specified in @MaxRecords@, Amazon Web Services
-- returns a value in the @Marker@ field of the response. You can retrieve
-- the next set of response records by providing the returned marker value
-- in the @Marker@ parameter and retrying the request.
describeDataSharesForConsumerResponse_marker :: Lens.Lens' DescribeDataSharesForConsumerResponse (Prelude.Maybe Prelude.Text)
describeDataSharesForConsumerResponse_marker :: Lens' DescribeDataSharesForConsumerResponse (Maybe Text)
describeDataSharesForConsumerResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeDataSharesForConsumerResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeDataSharesForConsumerResponse' :: DescribeDataSharesForConsumerResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeDataSharesForConsumerResponse
s@DescribeDataSharesForConsumerResponse' {} Maybe Text
a -> DescribeDataSharesForConsumerResponse
s {$sel:marker:DescribeDataSharesForConsumerResponse' :: Maybe Text
marker = Maybe Text
a} :: DescribeDataSharesForConsumerResponse)

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

instance
  Prelude.NFData
    DescribeDataSharesForConsumerResponse
  where
  rnf :: DescribeDataSharesForConsumerResponse -> ()
rnf DescribeDataSharesForConsumerResponse' {Int
Maybe [DataShare]
Maybe Text
httpStatus :: Int
marker :: Maybe Text
dataShares :: Maybe [DataShare]
$sel:httpStatus:DescribeDataSharesForConsumerResponse' :: DescribeDataSharesForConsumerResponse -> Int
$sel:marker:DescribeDataSharesForConsumerResponse' :: DescribeDataSharesForConsumerResponse -> Maybe Text
$sel:dataShares:DescribeDataSharesForConsumerResponse' :: DescribeDataSharesForConsumerResponse -> Maybe [DataShare]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [DataShare]
dataShares
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus