{-# LANGUAGE OverloadedStrings #-} module Main where import Servant import Servant.Client import Network.Wai.Handler.Warp import Network.Wai.Logger import Network.HTTP.Client hiding (Proxy) import Control.Monad.Reader import Data.Text.I18n.Po -- internal imports import API import Types import Control main :: IO () main = do mngr <- newManager defaultManagerSettings (l10n, _) <- getL10n "./locales" withStdoutLogger $ \ilog -> do let settings = setPort 3000 $ setLogger ilog defaultSettings initState = ReadState -- { rsManager = manager { rsL10n = l10n , rsBackend = mkClientEnv mngr (BaseUrl Http "localhost" 8000 "") , rsHashParams = recommendedHashParams } runSettings settings (userApp initState) userApp :: ReadState -> Application userApp initState = serveWithContext userApi EmptyContext $ hoistServerWithContext userApi Proxy (`runReaderT` initState) (\mcookie -> userSelectControl mcookie :<|> userOverviewControl mcookie :<|> buyControl mcookie :<|> purchaseControl mcookie :<|> userManageControl mcookie :<|> userManageDetailsSubmitControl mcookie :<|> userManageAuthCreateControl mcookie :<|> userManageAuthDeleteControl mcookie :<|> userNewControl mcookie :<|> userNewPostControl mcookie :<|> authControl mcookie :<|> authPostControl mcookie :<|> authLogoutControl mcookie ) userApi :: Proxy UserAPI userApi = Proxy