module Amazonka.Pager
( AWSPager (..),
AWSTruncated (..),
stop,
choice,
)
where
import Amazonka.Core.Lens.Internal (Getter, to)
import Amazonka.Data (ToText (..))
import Amazonka.Prelude
import Amazonka.Types
import qualified Data.HashMap.Strict as HashMap
class AWSRequest a => a where
page :: a -> AWSResponse a -> Maybe a
class AWSTruncated a where
truncated :: a -> Bool
instance AWSTruncated Bool where
truncated :: Bool -> Bool
truncated = forall a. a -> a
id
instance AWSTruncated [a] where
truncated :: [a] -> Bool
truncated = Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> Bool
null
instance AWSTruncated (HashMap k v) where
truncated :: HashMap k v -> Bool
truncated = Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k v. HashMap k v -> Bool
HashMap.null
instance {-# OVERLAPPABLE #-} AWSTruncated (Maybe a) where
truncated :: Maybe a -> Bool
truncated = forall a. Maybe a -> Bool
isJust
instance {-# OVERLAPS #-} AWSTruncated (Maybe Bool) where
truncated :: Maybe Bool -> Bool
truncated = forall a. a -> Maybe a -> a
fromMaybe Bool
False
stop :: AWSTruncated a => a -> Bool
stop :: forall a. AWSTruncated a => a -> Bool
stop = Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. AWSTruncated a => a -> Bool
truncated
choice ::
(Alternative f, ToText a, ToText b) =>
(s -> f a) ->
(s -> f b) ->
Getter s (f Text)
choice :: forall (f :: * -> *) a b s.
(Alternative f, ToText a, ToText b) =>
(s -> f a) -> (s -> f b) -> Getter s (f Text)
choice s -> f a
f s -> f b
g = forall (p :: * -> * -> *) (f :: * -> *) s a.
(Profunctor p, Contravariant f) =>
(s -> a) -> Optic' p f s a
to forall a b. (a -> b) -> a -> b
$ \s
x -> (forall a. ToText a => a -> Text
toText forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> s -> f a
f s
x) forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> (forall a. ToText a => a -> Text
toText forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> s -> f b
g s
x)