module Hercules.CLI.Common
( runAuthenticated,
runAuthenticatedOrDummy,
exitMsg,
)
where
import Hercules.CLI.Client
import Hercules.CLI.Credentials (determineDomain, readToken, tryReadEffectToken)
import Hercules.CLI.Exception (exitMsg)
import Protolude
import RIO (RIO, runRIO)
import Servant.Auth.Client (Token (Token))
runAuthenticated :: RIO (HerculesClientToken, HerculesClientEnv) b -> IO b
runAuthenticated :: forall b. RIO (HerculesClientToken, HerculesClientEnv) b -> IO b
runAuthenticated RIO (HerculesClientToken, HerculesClientEnv) b
m = do
HerculesClientEnv
clientEnv <- IO HerculesClientEnv
Hercules.CLI.Client.init
Text
token <- IO Text -> IO Text
readToken IO Text
determineDomain
forall (m :: * -> *) env a. MonadIO m => env -> RIO env a -> m a
runRIO (Token -> HerculesClientToken
HerculesClientToken forall a b. (a -> b) -> a -> b
$ ByteString -> Token
Token forall a b. (a -> b) -> a -> b
$ Text -> ByteString
encodeUtf8 Text
token, HerculesClientEnv
clientEnv) RIO (HerculesClientToken, HerculesClientEnv) b
m
runAuthenticatedOrDummy ::
Bool ->
RIO (HerculesClientToken, HerculesClientEnv) b ->
IO b
runAuthenticatedOrDummy :: forall b.
Bool -> RIO (HerculesClientToken, HerculesClientEnv) b -> IO b
runAuthenticatedOrDummy Bool
True = forall b. RIO (HerculesClientToken, HerculesClientEnv) b -> IO b
runAuthenticated
runAuthenticatedOrDummy Bool
False = \RIO (HerculesClientToken, HerculesClientEnv) b
m -> do
HerculesClientEnv
clientEnv <- IO HerculesClientEnv
Hercules.CLI.Client.init
Text
token <- forall a. a -> Maybe a -> a
fromMaybe Text
"dummy-token" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> IO (Maybe Text)
tryReadEffectToken
forall (m :: * -> *) env a. MonadIO m => env -> RIO env a -> m a
runRIO (Token -> HerculesClientToken
HerculesClientToken forall a b. (a -> b) -> a -> b
$ ByteString -> Token
Token forall a b. (a -> b) -> a -> b
$ Text -> ByteString
encodeUtf8 Text
token, HerculesClientEnv
clientEnv) RIO (HerculesClientToken, HerculesClientEnv) b
m