packages feed

salvia-0.0.4: src/Network/Salvia/Handlers/Default.hs

module Network.Salvia.Handlers.Default (hDefault) where

import System.IO
import Control.Concurrent.STM

import Network.Salvia.Handlers.Banner
import Network.Salvia.Handlers.Counter
import Network.Salvia.Handlers.Error
import Network.Salvia.Handlers.Head
import Network.Salvia.Handlers.Log
import Network.Salvia.Handlers.Parser
import Network.Salvia.Handlers.Printer
import Network.Salvia.Handlers.Session
import Network.Salvia.Httpd
import Network.Protocol.Http

hDefault :: TVar Int -> Sessions a -> SessionHandler a () -> Handler ()
hDefault count sessions handler = do
  hBanner "salvia-httpd"
  hParser onerror
    $ hHead $ do
      session <- hSession sessions 300
      handler session
  hPrinter
  hLog count stdout
  hCounter count
  where
    onerror err = do
      hError BadRequest
      sendStrLn []
      sendStrLn err