2019-09-06 23:57:25 +00:00
|
|
|
module Main where
|
|
|
|
|
2019-09-08 00:37:50 +00:00
|
|
|
import Servant
|
|
|
|
import Servant.Server
|
|
|
|
|
|
|
|
import Network.Wai.Handler.Warp
|
|
|
|
import Network.Wai.Logger
|
|
|
|
|
2019-09-08 10:48:57 +00:00
|
|
|
import Network.HTTP.Client hiding (Proxy)
|
|
|
|
|
|
|
|
import Control.Monad.Reader
|
|
|
|
|
2019-09-08 15:27:38 +00:00
|
|
|
import Data.Text.I18n
|
|
|
|
import Data.Text.I18n.Po
|
|
|
|
|
2019-09-08 00:37:50 +00:00
|
|
|
-- internal imports
|
|
|
|
|
|
|
|
import API
|
|
|
|
import Types
|
|
|
|
import View
|
2019-09-08 10:48:57 +00:00
|
|
|
import Control
|
2019-09-08 00:37:50 +00:00
|
|
|
|
2019-09-06 23:57:25 +00:00
|
|
|
main :: IO ()
|
2019-09-08 00:37:50 +00:00
|
|
|
main = do
|
2019-09-08 10:48:57 +00:00
|
|
|
manager <- newManager defaultManagerSettings
|
2019-09-08 15:27:38 +00:00
|
|
|
(l10n, _) <- getL10n "./locales"
|
2019-09-08 00:37:50 +00:00
|
|
|
withStdoutLogger $ \ilog -> do
|
|
|
|
let settings = setPort 3000 $ setLogger ilog defaultSettings
|
2019-09-08 10:48:57 +00:00
|
|
|
initState = ReadState
|
|
|
|
{ rsManager = manager
|
2019-09-08 15:27:38 +00:00
|
|
|
, rsL10n = l10n
|
2019-09-08 10:48:57 +00:00
|
|
|
}
|
|
|
|
runSettings settings (userApp initState)
|
|
|
|
|
|
|
|
userApp initState = serveWithContext userApi (EmptyContext) $
|
|
|
|
hoistServerWithContext
|
|
|
|
userApi
|
|
|
|
Proxy
|
|
|
|
(`runReaderT` initState)
|
2019-09-11 04:27:54 +00:00
|
|
|
( userSelectControl
|
|
|
|
:<|> userOverviewControl
|
|
|
|
:<|> authControl
|
2019-09-08 10:48:57 +00:00
|
|
|
)
|
2019-09-08 00:37:50 +00:00
|
|
|
|
|
|
|
userApi :: Proxy UserAPI
|
|
|
|
userApi = Proxy
|