{-# 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.SNS.ListPhoneNumbersOptedOut
-- 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 phone numbers that are opted out, meaning you cannot
-- send SMS messages to them.
--
-- The results for @ListPhoneNumbersOptedOut@ are paginated, and each page
-- returns up to 100 phone numbers. If additional phone numbers are
-- available after the first page of results, then a @NextToken@ string
-- will be returned. To receive the next page, you call
-- @ListPhoneNumbersOptedOut@ again using the @NextToken@ string received
-- from the previous call. When there are no more records to return,
-- @NextToken@ will be null.
--
-- This operation returns paginated results.
module Amazonka.SNS.ListPhoneNumbersOptedOut
  ( -- * Creating a Request
    ListPhoneNumbersOptedOut (..),
    newListPhoneNumbersOptedOut,

    -- * Request Lenses
    listPhoneNumbersOptedOut_nextToken,

    -- * Destructuring the Response
    ListPhoneNumbersOptedOutResponse (..),
    newListPhoneNumbersOptedOutResponse,

    -- * Response Lenses
    listPhoneNumbersOptedOutResponse_nextToken,
    listPhoneNumbersOptedOutResponse_phoneNumbers,
    listPhoneNumbersOptedOutResponse_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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.SNS.Types

-- | The input for the @ListPhoneNumbersOptedOut@ action.
--
-- /See:/ 'newListPhoneNumbersOptedOut' smart constructor.
data ListPhoneNumbersOptedOut = ListPhoneNumbersOptedOut'
  { -- | A @NextToken@ string is used when you call the
    -- @ListPhoneNumbersOptedOut@ action to retrieve additional records that
    -- are available after the first page of results.
    ListPhoneNumbersOptedOut -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (ListPhoneNumbersOptedOut -> ListPhoneNumbersOptedOut -> Bool
(ListPhoneNumbersOptedOut -> ListPhoneNumbersOptedOut -> Bool)
-> (ListPhoneNumbersOptedOut -> ListPhoneNumbersOptedOut -> Bool)
-> Eq ListPhoneNumbersOptedOut
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ListPhoneNumbersOptedOut -> ListPhoneNumbersOptedOut -> Bool
== :: ListPhoneNumbersOptedOut -> ListPhoneNumbersOptedOut -> Bool
$c/= :: ListPhoneNumbersOptedOut -> ListPhoneNumbersOptedOut -> Bool
/= :: ListPhoneNumbersOptedOut -> ListPhoneNumbersOptedOut -> Bool
Prelude.Eq, ReadPrec [ListPhoneNumbersOptedOut]
ReadPrec ListPhoneNumbersOptedOut
Int -> ReadS ListPhoneNumbersOptedOut
ReadS [ListPhoneNumbersOptedOut]
(Int -> ReadS ListPhoneNumbersOptedOut)
-> ReadS [ListPhoneNumbersOptedOut]
-> ReadPrec ListPhoneNumbersOptedOut
-> ReadPrec [ListPhoneNumbersOptedOut]
-> Read ListPhoneNumbersOptedOut
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS ListPhoneNumbersOptedOut
readsPrec :: Int -> ReadS ListPhoneNumbersOptedOut
$creadList :: ReadS [ListPhoneNumbersOptedOut]
readList :: ReadS [ListPhoneNumbersOptedOut]
$creadPrec :: ReadPrec ListPhoneNumbersOptedOut
readPrec :: ReadPrec ListPhoneNumbersOptedOut
$creadListPrec :: ReadPrec [ListPhoneNumbersOptedOut]
readListPrec :: ReadPrec [ListPhoneNumbersOptedOut]
Prelude.Read, Int -> ListPhoneNumbersOptedOut -> ShowS
[ListPhoneNumbersOptedOut] -> ShowS
ListPhoneNumbersOptedOut -> String
(Int -> ListPhoneNumbersOptedOut -> ShowS)
-> (ListPhoneNumbersOptedOut -> String)
-> ([ListPhoneNumbersOptedOut] -> ShowS)
-> Show ListPhoneNumbersOptedOut
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ListPhoneNumbersOptedOut -> ShowS
showsPrec :: Int -> ListPhoneNumbersOptedOut -> ShowS
$cshow :: ListPhoneNumbersOptedOut -> String
show :: ListPhoneNumbersOptedOut -> String
$cshowList :: [ListPhoneNumbersOptedOut] -> ShowS
showList :: [ListPhoneNumbersOptedOut] -> ShowS
Prelude.Show, (forall x.
 ListPhoneNumbersOptedOut -> Rep ListPhoneNumbersOptedOut x)
-> (forall x.
    Rep ListPhoneNumbersOptedOut x -> ListPhoneNumbersOptedOut)
-> Generic ListPhoneNumbersOptedOut
forall x.
Rep ListPhoneNumbersOptedOut x -> ListPhoneNumbersOptedOut
forall x.
ListPhoneNumbersOptedOut -> Rep ListPhoneNumbersOptedOut x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
ListPhoneNumbersOptedOut -> Rep ListPhoneNumbersOptedOut x
from :: forall x.
ListPhoneNumbersOptedOut -> Rep ListPhoneNumbersOptedOut x
$cto :: forall x.
Rep ListPhoneNumbersOptedOut x -> ListPhoneNumbersOptedOut
to :: forall x.
Rep ListPhoneNumbersOptedOut x -> ListPhoneNumbersOptedOut
Prelude.Generic)

-- |
-- Create a value of 'ListPhoneNumbersOptedOut' 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:
--
-- 'nextToken', 'listPhoneNumbersOptedOut_nextToken' - A @NextToken@ string is used when you call the
-- @ListPhoneNumbersOptedOut@ action to retrieve additional records that
-- are available after the first page of results.
newListPhoneNumbersOptedOut ::
  ListPhoneNumbersOptedOut
newListPhoneNumbersOptedOut :: ListPhoneNumbersOptedOut
newListPhoneNumbersOptedOut =
  ListPhoneNumbersOptedOut'
    { nextToken :: Maybe Text
nextToken =
        Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | A @NextToken@ string is used when you call the
-- @ListPhoneNumbersOptedOut@ action to retrieve additional records that
-- are available after the first page of results.
listPhoneNumbersOptedOut_nextToken :: Lens.Lens' ListPhoneNumbersOptedOut (Prelude.Maybe Prelude.Text)
listPhoneNumbersOptedOut_nextToken :: Lens' ListPhoneNumbersOptedOut (Maybe Text)
listPhoneNumbersOptedOut_nextToken = (ListPhoneNumbersOptedOut -> Maybe Text)
-> (ListPhoneNumbersOptedOut
    -> Maybe Text -> ListPhoneNumbersOptedOut)
-> Lens' ListPhoneNumbersOptedOut (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbersOptedOut' {Maybe Text
nextToken :: ListPhoneNumbersOptedOut -> Maybe Text
nextToken :: Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListPhoneNumbersOptedOut
s@ListPhoneNumbersOptedOut' {} Maybe Text
a -> ListPhoneNumbersOptedOut
s {nextToken = a} :: ListPhoneNumbersOptedOut)

instance Core.AWSPager ListPhoneNumbersOptedOut where
  page :: ListPhoneNumbersOptedOut
-> AWSResponse ListPhoneNumbersOptedOut
-> Maybe ListPhoneNumbersOptedOut
page ListPhoneNumbersOptedOut
rq AWSResponse ListPhoneNumbersOptedOut
rs
    | Maybe Text -> Bool
forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListPhoneNumbersOptedOut
ListPhoneNumbersOptedOutResponse
rs
            ListPhoneNumbersOptedOutResponse
-> Getting (First Text) ListPhoneNumbersOptedOutResponse Text
-> Maybe Text
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe Text -> Const (First Text) (Maybe Text))
-> ListPhoneNumbersOptedOutResponse
-> Const (First Text) ListPhoneNumbersOptedOutResponse
Lens' ListPhoneNumbersOptedOutResponse (Maybe Text)
listPhoneNumbersOptedOutResponse_nextToken
            ((Maybe Text -> Const (First Text) (Maybe Text))
 -> ListPhoneNumbersOptedOutResponse
 -> Const (First Text) ListPhoneNumbersOptedOutResponse)
-> ((Text -> Const (First Text) Text)
    -> Maybe Text -> Const (First Text) (Maybe Text))
-> Getting (First Text) ListPhoneNumbersOptedOutResponse Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Text -> Const (First Text) Text)
-> Maybe Text -> Const (First Text) (Maybe Text)
forall a a' (f :: * -> *).
Applicative f =>
(a -> f a') -> Maybe a -> f (Maybe a')
Lens._Just
        ) =
        Maybe ListPhoneNumbersOptedOut
forall a. Maybe a
Prelude.Nothing
    | Maybe [Text] -> Bool
forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListPhoneNumbersOptedOut
ListPhoneNumbersOptedOutResponse
rs
            ListPhoneNumbersOptedOutResponse
-> Getting (First [Text]) ListPhoneNumbersOptedOutResponse [Text]
-> Maybe [Text]
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe [Text] -> Const (First [Text]) (Maybe [Text]))
-> ListPhoneNumbersOptedOutResponse
-> Const (First [Text]) ListPhoneNumbersOptedOutResponse
Lens' ListPhoneNumbersOptedOutResponse (Maybe [Text])
listPhoneNumbersOptedOutResponse_phoneNumbers
            ((Maybe [Text] -> Const (First [Text]) (Maybe [Text]))
 -> ListPhoneNumbersOptedOutResponse
 -> Const (First [Text]) ListPhoneNumbersOptedOutResponse)
-> (([Text] -> Const (First [Text]) [Text])
    -> Maybe [Text] -> Const (First [Text]) (Maybe [Text]))
-> Getting (First [Text]) ListPhoneNumbersOptedOutResponse [Text]
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. ([Text] -> Const (First [Text]) [Text])
-> Maybe [Text] -> Const (First [Text]) (Maybe [Text])
forall a a' (f :: * -> *).
Applicative f =>
(a -> f a') -> Maybe a -> f (Maybe a')
Lens._Just
        ) =
        Maybe ListPhoneNumbersOptedOut
forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        ListPhoneNumbersOptedOut -> Maybe ListPhoneNumbersOptedOut
forall a. a -> Maybe a
Prelude.Just (ListPhoneNumbersOptedOut -> Maybe ListPhoneNumbersOptedOut)
-> ListPhoneNumbersOptedOut -> Maybe ListPhoneNumbersOptedOut
forall a b. (a -> b) -> a -> b
Prelude.$
          ListPhoneNumbersOptedOut
rq
            ListPhoneNumbersOptedOut
-> (ListPhoneNumbersOptedOut -> ListPhoneNumbersOptedOut)
-> ListPhoneNumbersOptedOut
forall a b. a -> (a -> b) -> b
Prelude.& (Maybe Text -> Identity (Maybe Text))
-> ListPhoneNumbersOptedOut -> Identity ListPhoneNumbersOptedOut
Lens' ListPhoneNumbersOptedOut (Maybe Text)
listPhoneNumbersOptedOut_nextToken
              ((Maybe Text -> Identity (Maybe Text))
 -> ListPhoneNumbersOptedOut -> Identity ListPhoneNumbersOptedOut)
-> Maybe Text
-> ListPhoneNumbersOptedOut
-> ListPhoneNumbersOptedOut
forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListPhoneNumbersOptedOut
ListPhoneNumbersOptedOutResponse
rs
              ListPhoneNumbersOptedOutResponse
-> Getting (First Text) ListPhoneNumbersOptedOutResponse Text
-> Maybe Text
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe Text -> Const (First Text) (Maybe Text))
-> ListPhoneNumbersOptedOutResponse
-> Const (First Text) ListPhoneNumbersOptedOutResponse
Lens' ListPhoneNumbersOptedOutResponse (Maybe Text)
listPhoneNumbersOptedOutResponse_nextToken
              ((Maybe Text -> Const (First Text) (Maybe Text))
 -> ListPhoneNumbersOptedOutResponse
 -> Const (First Text) ListPhoneNumbersOptedOutResponse)
-> ((Text -> Const (First Text) Text)
    -> Maybe Text -> Const (First Text) (Maybe Text))
-> Getting (First Text) ListPhoneNumbersOptedOutResponse Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Text -> Const (First Text) Text)
-> Maybe Text -> Const (First Text) (Maybe Text)
forall a a' (f :: * -> *).
Applicative f =>
(a -> f a') -> Maybe a -> f (Maybe a')
Lens._Just

instance Core.AWSRequest ListPhoneNumbersOptedOut where
  type
    AWSResponse ListPhoneNumbersOptedOut =
      ListPhoneNumbersOptedOutResponse
  request :: (Service -> Service)
-> ListPhoneNumbersOptedOut -> Request ListPhoneNumbersOptedOut
request Service -> Service
overrides =
    Service
-> ListPhoneNumbersOptedOut -> Request ListPhoneNumbersOptedOut
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 ListPhoneNumbersOptedOut
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListPhoneNumbersOptedOut)))
response =
    Text
-> (Int
    -> ResponseHeaders
    -> [Node]
    -> Either String (AWSResponse ListPhoneNumbersOptedOut))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListPhoneNumbersOptedOut
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListPhoneNumbersOptedOut)))
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
"ListPhoneNumbersOptedOutResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe [Text] -> Int -> ListPhoneNumbersOptedOutResponse
ListPhoneNumbersOptedOutResponse'
            (Maybe Text
 -> Maybe [Text] -> Int -> ListPhoneNumbersOptedOutResponse)
-> Either String (Maybe Text)
-> Either
     String (Maybe [Text] -> Int -> ListPhoneNumbersOptedOutResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"nextToken")
            Either
  String (Maybe [Text] -> Int -> ListPhoneNumbersOptedOutResponse)
-> Either String (Maybe [Text])
-> Either String (Int -> ListPhoneNumbersOptedOutResponse)
forall a b.
Either String (a -> b) -> Either String a -> Either String b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"phoneNumbers" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                            Either String [Node]
-> ([Node] -> Either String (Maybe [Text]))
-> Either String (Maybe [Text])
forall a b.
Either String a -> (a -> Either String b) -> Either String b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Text])
-> [Node] -> Either String (Maybe [Text])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Text]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                        )
            Either String (Int -> ListPhoneNumbersOptedOutResponse)
-> Either String Int
-> Either String ListPhoneNumbersOptedOutResponse
forall a b.
Either String (a -> b) -> Either String a -> Either String b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall a. a -> Either String a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable ListPhoneNumbersOptedOut where
  hashWithSalt :: Int -> ListPhoneNumbersOptedOut -> Int
hashWithSalt Int
_salt ListPhoneNumbersOptedOut' {Maybe Text
nextToken :: ListPhoneNumbersOptedOut -> Maybe Text
nextToken :: Maybe Text
..} =
    Int
_salt Int -> Maybe Text -> Int
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken

instance Prelude.NFData ListPhoneNumbersOptedOut where
  rnf :: ListPhoneNumbersOptedOut -> ()
rnf ListPhoneNumbersOptedOut' {Maybe Text
nextToken :: ListPhoneNumbersOptedOut -> Maybe Text
nextToken :: Maybe Text
..} =
    Maybe Text -> ()
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken

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

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

instance Data.ToQuery ListPhoneNumbersOptedOut where
  toQuery :: ListPhoneNumbersOptedOut -> QueryString
toQuery ListPhoneNumbersOptedOut' {Maybe Text
nextToken :: ListPhoneNumbersOptedOut -> Maybe Text
nextToken :: Maybe Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"ListPhoneNumbersOptedOut" :: Prelude.ByteString),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-03-31" :: Prelude.ByteString),
        ByteString
"nextToken" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken
      ]

-- | The response from the @ListPhoneNumbersOptedOut@ action.
--
-- /See:/ 'newListPhoneNumbersOptedOutResponse' smart constructor.
data ListPhoneNumbersOptedOutResponse = ListPhoneNumbersOptedOutResponse'
  { -- | A @NextToken@ string is returned when you call the
    -- @ListPhoneNumbersOptedOut@ action if additional records are available
    -- after the first page of results.
    ListPhoneNumbersOptedOutResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A list of phone numbers that are opted out of receiving SMS messages.
    -- The list is paginated, and each page can contain up to 100 phone
    -- numbers.
    ListPhoneNumbersOptedOutResponse -> Maybe [Text]
phoneNumbers :: Prelude.Maybe [Prelude.Text],
    -- | The response's http status code.
    ListPhoneNumbersOptedOutResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListPhoneNumbersOptedOutResponse
-> ListPhoneNumbersOptedOutResponse -> Bool
(ListPhoneNumbersOptedOutResponse
 -> ListPhoneNumbersOptedOutResponse -> Bool)
-> (ListPhoneNumbersOptedOutResponse
    -> ListPhoneNumbersOptedOutResponse -> Bool)
-> Eq ListPhoneNumbersOptedOutResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ListPhoneNumbersOptedOutResponse
-> ListPhoneNumbersOptedOutResponse -> Bool
== :: ListPhoneNumbersOptedOutResponse
-> ListPhoneNumbersOptedOutResponse -> Bool
$c/= :: ListPhoneNumbersOptedOutResponse
-> ListPhoneNumbersOptedOutResponse -> Bool
/= :: ListPhoneNumbersOptedOutResponse
-> ListPhoneNumbersOptedOutResponse -> Bool
Prelude.Eq, ReadPrec [ListPhoneNumbersOptedOutResponse]
ReadPrec ListPhoneNumbersOptedOutResponse
Int -> ReadS ListPhoneNumbersOptedOutResponse
ReadS [ListPhoneNumbersOptedOutResponse]
(Int -> ReadS ListPhoneNumbersOptedOutResponse)
-> ReadS [ListPhoneNumbersOptedOutResponse]
-> ReadPrec ListPhoneNumbersOptedOutResponse
-> ReadPrec [ListPhoneNumbersOptedOutResponse]
-> Read ListPhoneNumbersOptedOutResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS ListPhoneNumbersOptedOutResponse
readsPrec :: Int -> ReadS ListPhoneNumbersOptedOutResponse
$creadList :: ReadS [ListPhoneNumbersOptedOutResponse]
readList :: ReadS [ListPhoneNumbersOptedOutResponse]
$creadPrec :: ReadPrec ListPhoneNumbersOptedOutResponse
readPrec :: ReadPrec ListPhoneNumbersOptedOutResponse
$creadListPrec :: ReadPrec [ListPhoneNumbersOptedOutResponse]
readListPrec :: ReadPrec [ListPhoneNumbersOptedOutResponse]
Prelude.Read, Int -> ListPhoneNumbersOptedOutResponse -> ShowS
[ListPhoneNumbersOptedOutResponse] -> ShowS
ListPhoneNumbersOptedOutResponse -> String
(Int -> ListPhoneNumbersOptedOutResponse -> ShowS)
-> (ListPhoneNumbersOptedOutResponse -> String)
-> ([ListPhoneNumbersOptedOutResponse] -> ShowS)
-> Show ListPhoneNumbersOptedOutResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ListPhoneNumbersOptedOutResponse -> ShowS
showsPrec :: Int -> ListPhoneNumbersOptedOutResponse -> ShowS
$cshow :: ListPhoneNumbersOptedOutResponse -> String
show :: ListPhoneNumbersOptedOutResponse -> String
$cshowList :: [ListPhoneNumbersOptedOutResponse] -> ShowS
showList :: [ListPhoneNumbersOptedOutResponse] -> ShowS
Prelude.Show, (forall x.
 ListPhoneNumbersOptedOutResponse
 -> Rep ListPhoneNumbersOptedOutResponse x)
-> (forall x.
    Rep ListPhoneNumbersOptedOutResponse x
    -> ListPhoneNumbersOptedOutResponse)
-> Generic ListPhoneNumbersOptedOutResponse
forall x.
Rep ListPhoneNumbersOptedOutResponse x
-> ListPhoneNumbersOptedOutResponse
forall x.
ListPhoneNumbersOptedOutResponse
-> Rep ListPhoneNumbersOptedOutResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
ListPhoneNumbersOptedOutResponse
-> Rep ListPhoneNumbersOptedOutResponse x
from :: forall x.
ListPhoneNumbersOptedOutResponse
-> Rep ListPhoneNumbersOptedOutResponse x
$cto :: forall x.
Rep ListPhoneNumbersOptedOutResponse x
-> ListPhoneNumbersOptedOutResponse
to :: forall x.
Rep ListPhoneNumbersOptedOutResponse x
-> ListPhoneNumbersOptedOutResponse
Prelude.Generic)

-- |
-- Create a value of 'ListPhoneNumbersOptedOutResponse' 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:
--
-- 'nextToken', 'listPhoneNumbersOptedOutResponse_nextToken' - A @NextToken@ string is returned when you call the
-- @ListPhoneNumbersOptedOut@ action if additional records are available
-- after the first page of results.
--
-- 'phoneNumbers', 'listPhoneNumbersOptedOutResponse_phoneNumbers' - A list of phone numbers that are opted out of receiving SMS messages.
-- The list is paginated, and each page can contain up to 100 phone
-- numbers.
--
-- 'httpStatus', 'listPhoneNumbersOptedOutResponse_httpStatus' - The response's http status code.
newListPhoneNumbersOptedOutResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListPhoneNumbersOptedOutResponse
newListPhoneNumbersOptedOutResponse :: Int -> ListPhoneNumbersOptedOutResponse
newListPhoneNumbersOptedOutResponse Int
pHttpStatus_ =
  ListPhoneNumbersOptedOutResponse'
    { nextToken :: Maybe Text
nextToken =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      phoneNumbers :: Maybe [Text]
phoneNumbers = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      httpStatus :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A @NextToken@ string is returned when you call the
-- @ListPhoneNumbersOptedOut@ action if additional records are available
-- after the first page of results.
listPhoneNumbersOptedOutResponse_nextToken :: Lens.Lens' ListPhoneNumbersOptedOutResponse (Prelude.Maybe Prelude.Text)
listPhoneNumbersOptedOutResponse_nextToken :: Lens' ListPhoneNumbersOptedOutResponse (Maybe Text)
listPhoneNumbersOptedOutResponse_nextToken = (ListPhoneNumbersOptedOutResponse -> Maybe Text)
-> (ListPhoneNumbersOptedOutResponse
    -> Maybe Text -> ListPhoneNumbersOptedOutResponse)
-> Lens' ListPhoneNumbersOptedOutResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbersOptedOutResponse' {Maybe Text
nextToken :: ListPhoneNumbersOptedOutResponse -> Maybe Text
nextToken :: Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListPhoneNumbersOptedOutResponse
s@ListPhoneNumbersOptedOutResponse' {} Maybe Text
a -> ListPhoneNumbersOptedOutResponse
s {nextToken = a} :: ListPhoneNumbersOptedOutResponse)

-- | A list of phone numbers that are opted out of receiving SMS messages.
-- The list is paginated, and each page can contain up to 100 phone
-- numbers.
listPhoneNumbersOptedOutResponse_phoneNumbers :: Lens.Lens' ListPhoneNumbersOptedOutResponse (Prelude.Maybe [Prelude.Text])
listPhoneNumbersOptedOutResponse_phoneNumbers :: Lens' ListPhoneNumbersOptedOutResponse (Maybe [Text])
listPhoneNumbersOptedOutResponse_phoneNumbers = (ListPhoneNumbersOptedOutResponse -> Maybe [Text])
-> (ListPhoneNumbersOptedOutResponse
    -> Maybe [Text] -> ListPhoneNumbersOptedOutResponse)
-> Lens' ListPhoneNumbersOptedOutResponse (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListPhoneNumbersOptedOutResponse' {Maybe [Text]
phoneNumbers :: ListPhoneNumbersOptedOutResponse -> Maybe [Text]
phoneNumbers :: Maybe [Text]
phoneNumbers} -> Maybe [Text]
phoneNumbers) (\s :: ListPhoneNumbersOptedOutResponse
s@ListPhoneNumbersOptedOutResponse' {} Maybe [Text]
a -> ListPhoneNumbersOptedOutResponse
s {phoneNumbers = a} :: ListPhoneNumbersOptedOutResponse) ((Maybe [Text] -> f (Maybe [Text]))
 -> ListPhoneNumbersOptedOutResponse
 -> f ListPhoneNumbersOptedOutResponse)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> ListPhoneNumbersOptedOutResponse
-> f ListPhoneNumbersOptedOutResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Iso [Text] [Text] [Text] [Text]
Lens.coerced

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

instance
  Prelude.NFData
    ListPhoneNumbersOptedOutResponse
  where
  rnf :: ListPhoneNumbersOptedOutResponse -> ()
rnf ListPhoneNumbersOptedOutResponse' {Int
Maybe [Text]
Maybe Text
nextToken :: ListPhoneNumbersOptedOutResponse -> Maybe Text
phoneNumbers :: ListPhoneNumbersOptedOutResponse -> Maybe [Text]
httpStatus :: ListPhoneNumbersOptedOutResponse -> Int
nextToken :: Maybe Text
phoneNumbers :: Maybe [Text]
httpStatus :: Int
..} =
    Maybe Text -> ()
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken () -> () -> ()
forall a b. a -> b -> b
`Prelude.seq`
      Maybe [Text] -> ()
forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
phoneNumbers () -> () -> ()
forall a b. a -> b -> b
`Prelude.seq`
        Int -> ()
forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus