HTTP.hs (1392B)
1 module Core.HTTP ( app ) where 2 3 import Core.Configuration ( adminEmail 4 , confLinkLength 5 , getRuntimeEnvironment) 6 import Core.Types 7 8 import Core.Templates (renderIndex, renderStyle) 9 import Feature.Generation.HTTP as Generation 10 import Feature.Sharing.HTTP as Sharing 11 12 import Control.Monad (void) 13 import Control.Monad.Trans (liftIO) 14 import Data.Maybe (Maybe (Nothing)) 15 import Network.Wai.Middleware.RequestLogger (logStdout, logStdoutDev) 16 import Network.Wai.Middleware.Static 17 import Web.Scotty 18 19 app :: String -> PurrApp () 20 app env = do 21 -- Middleware that are processed on every request 22 case env of 23 "production" -> middleware logStdout 24 "prod" -> middleware logStdout 25 _ -> middleware logStdoutDev 26 middleware $ staticPolicy (noDots >-> addBase "data/assets/public") 27 28 -- Core Routes 29 get "/" $ do 30 email <- liftIO adminEmail 31 html $ renderIndex "/" email 32 33 get "/style.css" $ do 34 setHeader "Content-Type" "text/css" 35 text renderStyle 36 37 -- Feature Routes 38 Sharing.routes 39 Generation.routes