google-cloud-0.0.4: Client for the Google Cloud APIs

Safe HaskellNone
LanguageHaskell2010

Google.Cloud.Internal.Types

Synopsis

Documentation

data Handle #

Constructors

Handle 

Fields

  • hManager :: !Manager

    Shared HTTP manager.

  • hToken :: !(TVar (Maybe Token))

    Cache for the access token. Use accessToken when within the Cloud monad to access the token. That function will automatically refresh it when it is about to expire.

  • hFetchToken :: !(Cloud Token)

    The action which is used to fetch a fresh access token.

Instances

MonadReader Handle Cloud # 

Methods

ask :: Cloud Handle #

local :: (Handle -> Handle) -> Cloud a -> Cloud a #

reader :: (Handle -> a) -> Cloud a #

data Token #

Constructors

Token 

Instances

data Error #

Instances

Show Error # 

Methods

showsPrec :: Int -> Error -> ShowS #

show :: Error -> String #

showList :: [Error] -> ShowS #

MonadError Error Cloud # 

Methods

throwError :: Error -> Cloud a #

catchError :: Cloud a -> (Error -> Cloud a) -> Cloud a #

newtype Cloud a #

Constructors

Cloud 

Instances

Monad Cloud # 

Methods

(>>=) :: Cloud a -> (a -> Cloud b) -> Cloud b #

(>>) :: Cloud a -> Cloud b -> Cloud b #

return :: a -> Cloud a #

fail :: String -> Cloud a #

Functor Cloud # 

Methods

fmap :: (a -> b) -> Cloud a -> Cloud b #

(<$) :: a -> Cloud b -> Cloud a #

Applicative Cloud # 

Methods

pure :: a -> Cloud a #

(<*>) :: Cloud (a -> b) -> Cloud a -> Cloud b #

liftA2 :: (a -> b -> c) -> Cloud a -> Cloud b -> Cloud c #

(*>) :: Cloud a -> Cloud b -> Cloud b #

(<*) :: Cloud a -> Cloud b -> Cloud a #

Alternative Cloud # 

Methods

empty :: Cloud a #

(<|>) :: Cloud a -> Cloud a -> Cloud a #

some :: Cloud a -> Cloud [a] #

many :: Cloud a -> Cloud [a] #

MonadIO Cloud # 

Methods

liftIO :: IO a -> Cloud a #

MonadReader Handle Cloud # 

Methods

ask :: Cloud Handle #

local :: (Handle -> Handle) -> Cloud a -> Cloud a #

reader :: (Handle -> a) -> Cloud a #

MonadError Error Cloud # 

Methods

throwError :: Error -> Cloud a #

catchError :: Cloud a -> (Error -> Cloud a) -> Cloud a #

evalCloud :: Handle -> Cloud a -> IO (Either Error a) #

Evaluate a Cloud action and return either the Error or the result.

transformException :: (SomeException -> Error) -> SomeException -> IO Error #

Transform an synchronous exception into an Error. Async exceptions are left untouched and propagated into the IO monad.

cloudIO :: IO a -> Cloud a #

Run an IO action inside the Cloud monad, catch all synchronous exceptions and transform them into Errors.

retry :: Cloud a -> Cloud a #

Retry a Cloud action multiple times before failing for good.

TODO: Make the retry count configurable