module Google.Cloud
( Handle
, createHandle, mkHandle
, Cloud
, evalCloud
) where
import Control.Concurrent.STM
import Network.HTTP.Client (Manager, newManager)
import Network.HTTP.Client.TLS (tlsManagerSettings)
import Google.Cloud.Internal.Types
import Google.Cloud.Internal.Token
createHandle :: IO Handle
createHandle = do
manager <- newManager tlsManagerSettings
mkHandle manager defaultMetadataToken
mkHandle :: Manager -> Cloud Token -> IO Handle
mkHandle manager fetchToken = do
token <- newTVarIO Nothing
return $ Handle manager token fetchToken