{-# 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.GroundStation.ListEphemerides
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- List existing ephemerides.
--
-- This operation returns paginated results.
module Amazonka.GroundStation.ListEphemerides
  ( -- * Creating a Request
    ListEphemerides (..),
    newListEphemerides,

    -- * Request Lenses
    listEphemerides_maxResults,
    listEphemerides_nextToken,
    listEphemerides_statusList,
    listEphemerides_endTime,
    listEphemerides_satelliteId,
    listEphemerides_startTime,

    -- * Destructuring the Response
    ListEphemeridesResponse (..),
    newListEphemeridesResponse,

    -- * Response Lenses
    listEphemeridesResponse_ephemerides,
    listEphemeridesResponse_nextToken,
    listEphemeridesResponse_httpStatus,
  )
where

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

-- | /See:/ 'newListEphemerides' smart constructor.
data ListEphemerides = ListEphemerides'
  { -- | Maximum number of ephemerides to return.
    ListEphemerides -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | Pagination token.
    ListEphemerides -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The list of ephemeris status to return.
    ListEphemerides -> Maybe [EphemerisStatus]
statusList :: Prelude.Maybe [EphemerisStatus],
    -- | The end time to list in UTC. The operation will return an ephemeris if
    -- its expiration time is within the time range defined by the @startTime@
    -- and @endTime@.
    ListEphemerides -> POSIX
endTime :: Data.POSIX,
    -- | The AWS Ground Station satellite ID to list ephemeris for.
    ListEphemerides -> Text
satelliteId :: Prelude.Text,
    -- | The start time to list in UTC. The operation will return an ephemeris if
    -- its expiration time is within the time range defined by the @startTime@
    -- and @endTime@.
    ListEphemerides -> POSIX
startTime :: Data.POSIX
  }
  deriving (ListEphemerides -> ListEphemerides -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListEphemerides -> ListEphemerides -> Bool
$c/= :: ListEphemerides -> ListEphemerides -> Bool
== :: ListEphemerides -> ListEphemerides -> Bool
$c== :: ListEphemerides -> ListEphemerides -> Bool
Prelude.Eq, ReadPrec [ListEphemerides]
ReadPrec ListEphemerides
Int -> ReadS ListEphemerides
ReadS [ListEphemerides]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListEphemerides]
$creadListPrec :: ReadPrec [ListEphemerides]
readPrec :: ReadPrec ListEphemerides
$creadPrec :: ReadPrec ListEphemerides
readList :: ReadS [ListEphemerides]
$creadList :: ReadS [ListEphemerides]
readsPrec :: Int -> ReadS ListEphemerides
$creadsPrec :: Int -> ReadS ListEphemerides
Prelude.Read, Int -> ListEphemerides -> ShowS
[ListEphemerides] -> ShowS
ListEphemerides -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListEphemerides] -> ShowS
$cshowList :: [ListEphemerides] -> ShowS
show :: ListEphemerides -> String
$cshow :: ListEphemerides -> String
showsPrec :: Int -> ListEphemerides -> ShowS
$cshowsPrec :: Int -> ListEphemerides -> ShowS
Prelude.Show, forall x. Rep ListEphemerides x -> ListEphemerides
forall x. ListEphemerides -> Rep ListEphemerides x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListEphemerides x -> ListEphemerides
$cfrom :: forall x. ListEphemerides -> Rep ListEphemerides x
Prelude.Generic)

-- |
-- Create a value of 'ListEphemerides' 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:
--
-- 'maxResults', 'listEphemerides_maxResults' - Maximum number of ephemerides to return.
--
-- 'nextToken', 'listEphemerides_nextToken' - Pagination token.
--
-- 'statusList', 'listEphemerides_statusList' - The list of ephemeris status to return.
--
-- 'endTime', 'listEphemerides_endTime' - The end time to list in UTC. The operation will return an ephemeris if
-- its expiration time is within the time range defined by the @startTime@
-- and @endTime@.
--
-- 'satelliteId', 'listEphemerides_satelliteId' - The AWS Ground Station satellite ID to list ephemeris for.
--
-- 'startTime', 'listEphemerides_startTime' - The start time to list in UTC. The operation will return an ephemeris if
-- its expiration time is within the time range defined by the @startTime@
-- and @endTime@.
newListEphemerides ::
  -- | 'endTime'
  Prelude.UTCTime ->
  -- | 'satelliteId'
  Prelude.Text ->
  -- | 'startTime'
  Prelude.UTCTime ->
  ListEphemerides
newListEphemerides :: UTCTime -> Text -> UTCTime -> ListEphemerides
newListEphemerides
  UTCTime
pEndTime_
  Text
pSatelliteId_
  UTCTime
pStartTime_ =
    ListEphemerides'
      { $sel:maxResults:ListEphemerides' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:ListEphemerides' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:statusList:ListEphemerides' :: Maybe [EphemerisStatus]
statusList = forall a. Maybe a
Prelude.Nothing,
        $sel:endTime:ListEphemerides' :: POSIX
endTime = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pEndTime_,
        $sel:satelliteId:ListEphemerides' :: Text
satelliteId = Text
pSatelliteId_,
        $sel:startTime:ListEphemerides' :: POSIX
startTime = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pStartTime_
      }

-- | Maximum number of ephemerides to return.
listEphemerides_maxResults :: Lens.Lens' ListEphemerides (Prelude.Maybe Prelude.Natural)
listEphemerides_maxResults :: Lens' ListEphemerides (Maybe Natural)
listEphemerides_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListEphemerides' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListEphemerides' :: ListEphemerides -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListEphemerides
s@ListEphemerides' {} Maybe Natural
a -> ListEphemerides
s {$sel:maxResults:ListEphemerides' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListEphemerides)

-- | Pagination token.
listEphemerides_nextToken :: Lens.Lens' ListEphemerides (Prelude.Maybe Prelude.Text)
listEphemerides_nextToken :: Lens' ListEphemerides (Maybe Text)
listEphemerides_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListEphemerides' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListEphemerides' :: ListEphemerides -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListEphemerides
s@ListEphemerides' {} Maybe Text
a -> ListEphemerides
s {$sel:nextToken:ListEphemerides' :: Maybe Text
nextToken = Maybe Text
a} :: ListEphemerides)

-- | The list of ephemeris status to return.
listEphemerides_statusList :: Lens.Lens' ListEphemerides (Prelude.Maybe [EphemerisStatus])
listEphemerides_statusList :: Lens' ListEphemerides (Maybe [EphemerisStatus])
listEphemerides_statusList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListEphemerides' {Maybe [EphemerisStatus]
statusList :: Maybe [EphemerisStatus]
$sel:statusList:ListEphemerides' :: ListEphemerides -> Maybe [EphemerisStatus]
statusList} -> Maybe [EphemerisStatus]
statusList) (\s :: ListEphemerides
s@ListEphemerides' {} Maybe [EphemerisStatus]
a -> ListEphemerides
s {$sel:statusList:ListEphemerides' :: Maybe [EphemerisStatus]
statusList = Maybe [EphemerisStatus]
a} :: ListEphemerides) 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 end time to list in UTC. The operation will return an ephemeris if
-- its expiration time is within the time range defined by the @startTime@
-- and @endTime@.
listEphemerides_endTime :: Lens.Lens' ListEphemerides Prelude.UTCTime
listEphemerides_endTime :: Lens' ListEphemerides UTCTime
listEphemerides_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListEphemerides' {POSIX
endTime :: POSIX
$sel:endTime:ListEphemerides' :: ListEphemerides -> POSIX
endTime} -> POSIX
endTime) (\s :: ListEphemerides
s@ListEphemerides' {} POSIX
a -> ListEphemerides
s {$sel:endTime:ListEphemerides' :: POSIX
endTime = POSIX
a} :: ListEphemerides) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The AWS Ground Station satellite ID to list ephemeris for.
listEphemerides_satelliteId :: Lens.Lens' ListEphemerides Prelude.Text
listEphemerides_satelliteId :: Lens' ListEphemerides Text
listEphemerides_satelliteId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListEphemerides' {Text
satelliteId :: Text
$sel:satelliteId:ListEphemerides' :: ListEphemerides -> Text
satelliteId} -> Text
satelliteId) (\s :: ListEphemerides
s@ListEphemerides' {} Text
a -> ListEphemerides
s {$sel:satelliteId:ListEphemerides' :: Text
satelliteId = Text
a} :: ListEphemerides)

-- | The start time to list in UTC. The operation will return an ephemeris if
-- its expiration time is within the time range defined by the @startTime@
-- and @endTime@.
listEphemerides_startTime :: Lens.Lens' ListEphemerides Prelude.UTCTime
listEphemerides_startTime :: Lens' ListEphemerides UTCTime
listEphemerides_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListEphemerides' {POSIX
startTime :: POSIX
$sel:startTime:ListEphemerides' :: ListEphemerides -> POSIX
startTime} -> POSIX
startTime) (\s :: ListEphemerides
s@ListEphemerides' {} POSIX
a -> ListEphemerides
s {$sel:startTime:ListEphemerides' :: POSIX
startTime = POSIX
a} :: ListEphemerides) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Core.AWSPager ListEphemerides where
  page :: ListEphemerides
-> AWSResponse ListEphemerides -> Maybe ListEphemerides
page ListEphemerides
rq AWSResponse ListEphemerides
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListEphemerides
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListEphemeridesResponse (Maybe Text)
listEphemeridesResponse_nextToken
            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 ListEphemerides
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListEphemeridesResponse (Maybe (NonEmpty EphemerisItem))
listEphemeridesResponse_ephemerides
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
Lens.to forall l. IsList l => l -> [Item l]
Prelude.toList
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ ListEphemerides
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListEphemerides (Maybe Text)
listEphemerides_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListEphemerides
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListEphemeridesResponse (Maybe Text)
listEphemeridesResponse_nextToken
          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 ListEphemerides where
  type
    AWSResponse ListEphemerides =
      ListEphemeridesResponse
  request :: (Service -> Service) -> ListEphemerides -> Request ListEphemerides
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 ListEphemerides
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse ListEphemerides)))
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 (NonEmpty EphemerisItem)
-> Maybe Text -> Int -> ListEphemeridesResponse
ListEphemeridesResponse'
            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
"ephemerides")
            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
"nextToken")
            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 ListEphemerides where
  hashWithSalt :: Int -> ListEphemerides -> Int
hashWithSalt Int
_salt ListEphemerides' {Maybe Natural
Maybe [EphemerisStatus]
Maybe Text
Text
POSIX
startTime :: POSIX
satelliteId :: Text
endTime :: POSIX
statusList :: Maybe [EphemerisStatus]
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:startTime:ListEphemerides' :: ListEphemerides -> POSIX
$sel:satelliteId:ListEphemerides' :: ListEphemerides -> Text
$sel:endTime:ListEphemerides' :: ListEphemerides -> POSIX
$sel:statusList:ListEphemerides' :: ListEphemerides -> Maybe [EphemerisStatus]
$sel:nextToken:ListEphemerides' :: ListEphemerides -> Maybe Text
$sel:maxResults:ListEphemerides' :: ListEphemerides -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [EphemerisStatus]
statusList
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
satelliteId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
startTime

instance Prelude.NFData ListEphemerides where
  rnf :: ListEphemerides -> ()
rnf ListEphemerides' {Maybe Natural
Maybe [EphemerisStatus]
Maybe Text
Text
POSIX
startTime :: POSIX
satelliteId :: Text
endTime :: POSIX
statusList :: Maybe [EphemerisStatus]
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:startTime:ListEphemerides' :: ListEphemerides -> POSIX
$sel:satelliteId:ListEphemerides' :: ListEphemerides -> Text
$sel:endTime:ListEphemerides' :: ListEphemerides -> POSIX
$sel:statusList:ListEphemerides' :: ListEphemerides -> Maybe [EphemerisStatus]
$sel:nextToken:ListEphemerides' :: ListEphemerides -> Maybe Text
$sel:maxResults:ListEphemerides' :: ListEphemerides -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [EphemerisStatus]
statusList
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
satelliteId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
startTime

instance Data.ToHeaders ListEphemerides where
  toHeaders :: ListEphemerides -> 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 ListEphemerides where
  toJSON :: ListEphemerides -> Value
toJSON ListEphemerides' {Maybe Natural
Maybe [EphemerisStatus]
Maybe Text
Text
POSIX
startTime :: POSIX
satelliteId :: Text
endTime :: POSIX
statusList :: Maybe [EphemerisStatus]
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:startTime:ListEphemerides' :: ListEphemerides -> POSIX
$sel:satelliteId:ListEphemerides' :: ListEphemerides -> Text
$sel:endTime:ListEphemerides' :: ListEphemerides -> POSIX
$sel:statusList:ListEphemerides' :: ListEphemerides -> Maybe [EphemerisStatus]
$sel:nextToken:ListEphemerides' :: ListEphemerides -> Maybe Text
$sel:maxResults:ListEphemerides' :: ListEphemerides -> Maybe Natural
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"statusList" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [EphemerisStatus]
statusList,
            forall a. a -> Maybe a
Prelude.Just (Key
"endTime" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= POSIX
endTime),
            forall a. a -> Maybe a
Prelude.Just (Key
"satelliteId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
satelliteId),
            forall a. a -> Maybe a
Prelude.Just (Key
"startTime" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= POSIX
startTime)
          ]
      )

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

instance Data.ToQuery ListEphemerides where
  toQuery :: ListEphemerides -> QueryString
toQuery ListEphemerides' {Maybe Natural
Maybe [EphemerisStatus]
Maybe Text
Text
POSIX
startTime :: POSIX
satelliteId :: Text
endTime :: POSIX
statusList :: Maybe [EphemerisStatus]
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:startTime:ListEphemerides' :: ListEphemerides -> POSIX
$sel:satelliteId:ListEphemerides' :: ListEphemerides -> Text
$sel:endTime:ListEphemerides' :: ListEphemerides -> POSIX
$sel:statusList:ListEphemerides' :: ListEphemerides -> Maybe [EphemerisStatus]
$sel:nextToken:ListEphemerides' :: ListEphemerides -> Maybe Text
$sel:maxResults:ListEphemerides' :: ListEphemerides -> Maybe Natural
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"maxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxResults,
        ByteString
"nextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken
      ]

-- | /See:/ 'newListEphemeridesResponse' smart constructor.
data ListEphemeridesResponse = ListEphemeridesResponse'
  { -- | List of ephemerides.
    ListEphemeridesResponse -> Maybe (NonEmpty EphemerisItem)
ephemerides :: Prelude.Maybe (Prelude.NonEmpty EphemerisItem),
    -- | Pagination token.
    ListEphemeridesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListEphemeridesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListEphemeridesResponse -> ListEphemeridesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListEphemeridesResponse -> ListEphemeridesResponse -> Bool
$c/= :: ListEphemeridesResponse -> ListEphemeridesResponse -> Bool
== :: ListEphemeridesResponse -> ListEphemeridesResponse -> Bool
$c== :: ListEphemeridesResponse -> ListEphemeridesResponse -> Bool
Prelude.Eq, ReadPrec [ListEphemeridesResponse]
ReadPrec ListEphemeridesResponse
Int -> ReadS ListEphemeridesResponse
ReadS [ListEphemeridesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListEphemeridesResponse]
$creadListPrec :: ReadPrec [ListEphemeridesResponse]
readPrec :: ReadPrec ListEphemeridesResponse
$creadPrec :: ReadPrec ListEphemeridesResponse
readList :: ReadS [ListEphemeridesResponse]
$creadList :: ReadS [ListEphemeridesResponse]
readsPrec :: Int -> ReadS ListEphemeridesResponse
$creadsPrec :: Int -> ReadS ListEphemeridesResponse
Prelude.Read, Int -> ListEphemeridesResponse -> ShowS
[ListEphemeridesResponse] -> ShowS
ListEphemeridesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListEphemeridesResponse] -> ShowS
$cshowList :: [ListEphemeridesResponse] -> ShowS
show :: ListEphemeridesResponse -> String
$cshow :: ListEphemeridesResponse -> String
showsPrec :: Int -> ListEphemeridesResponse -> ShowS
$cshowsPrec :: Int -> ListEphemeridesResponse -> ShowS
Prelude.Show, forall x. Rep ListEphemeridesResponse x -> ListEphemeridesResponse
forall x. ListEphemeridesResponse -> Rep ListEphemeridesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListEphemeridesResponse x -> ListEphemeridesResponse
$cfrom :: forall x. ListEphemeridesResponse -> Rep ListEphemeridesResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListEphemeridesResponse' 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:
--
-- 'ephemerides', 'listEphemeridesResponse_ephemerides' - List of ephemerides.
--
-- 'nextToken', 'listEphemeridesResponse_nextToken' - Pagination token.
--
-- 'httpStatus', 'listEphemeridesResponse_httpStatus' - The response's http status code.
newListEphemeridesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListEphemeridesResponse
newListEphemeridesResponse :: Int -> ListEphemeridesResponse
newListEphemeridesResponse Int
pHttpStatus_ =
  ListEphemeridesResponse'
    { $sel:ephemerides:ListEphemeridesResponse' :: Maybe (NonEmpty EphemerisItem)
ephemerides =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListEphemeridesResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListEphemeridesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | List of ephemerides.
listEphemeridesResponse_ephemerides :: Lens.Lens' ListEphemeridesResponse (Prelude.Maybe (Prelude.NonEmpty EphemerisItem))
listEphemeridesResponse_ephemerides :: Lens' ListEphemeridesResponse (Maybe (NonEmpty EphemerisItem))
listEphemeridesResponse_ephemerides = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListEphemeridesResponse' {Maybe (NonEmpty EphemerisItem)
ephemerides :: Maybe (NonEmpty EphemerisItem)
$sel:ephemerides:ListEphemeridesResponse' :: ListEphemeridesResponse -> Maybe (NonEmpty EphemerisItem)
ephemerides} -> Maybe (NonEmpty EphemerisItem)
ephemerides) (\s :: ListEphemeridesResponse
s@ListEphemeridesResponse' {} Maybe (NonEmpty EphemerisItem)
a -> ListEphemeridesResponse
s {$sel:ephemerides:ListEphemeridesResponse' :: Maybe (NonEmpty EphemerisItem)
ephemerides = Maybe (NonEmpty EphemerisItem)
a} :: ListEphemeridesResponse) 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

-- | Pagination token.
listEphemeridesResponse_nextToken :: Lens.Lens' ListEphemeridesResponse (Prelude.Maybe Prelude.Text)
listEphemeridesResponse_nextToken :: Lens' ListEphemeridesResponse (Maybe Text)
listEphemeridesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListEphemeridesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListEphemeridesResponse' :: ListEphemeridesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListEphemeridesResponse
s@ListEphemeridesResponse' {} Maybe Text
a -> ListEphemeridesResponse
s {$sel:nextToken:ListEphemeridesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListEphemeridesResponse)

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

instance Prelude.NFData ListEphemeridesResponse where
  rnf :: ListEphemeridesResponse -> ()
rnf ListEphemeridesResponse' {Int
Maybe (NonEmpty EphemerisItem)
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
ephemerides :: Maybe (NonEmpty EphemerisItem)
$sel:httpStatus:ListEphemeridesResponse' :: ListEphemeridesResponse -> Int
$sel:nextToken:ListEphemeridesResponse' :: ListEphemeridesResponse -> Maybe Text
$sel:ephemerides:ListEphemeridesResponse' :: ListEphemeridesResponse -> Maybe (NonEmpty EphemerisItem)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty EphemerisItem)
ephemerides
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus