purr

password generation and secret sharing
Log | Files | Refs | README | LICENSE

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