Shpadoinkle-router-0.1.0.0: Shpadoinkle/Router/Client.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeOperators #-}
{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
-- | Helper for querying the server from client side code, using a derived client.
-- This module exists to save you from having to use CPP yourself.
module Shpadoinkle.Router.Client
( runXHR
#ifdef ghcjs_HOST_OS
, module Servant.Client.Ghcjs
#else
, module Servant.Client
#endif
) where
import Control.Monad.Catch
#ifdef ghcjs_HOST_OS
import Servant.Client.Ghcjs
#else
import Servant.Client
#endif
import UnliftIO
import Shpadoinkle
-- | Run the ClientM from Servant as an XHR request.
-- Raises an exception if evalued with GHC.
runXHR :: MonadIO m => MonadThrow m => (JSM a -> m a) -> ClientM a -> m a
#ifdef ghcjs_HOST_OS
runXHR f m = f $ either throwM pure =<< runClientM m
#else
runXHR = error "not supported for ghc"
#endif