module Network.Salvia.Handlers.Default (hDefault) where import Control.Concurrent.STM import Network.Protocol.Http 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 System.IO hDefault :: Show a => TVar Int -> Sessions a -> SessionHandler a () -> Handler () hDefault count sessions handler = do hBanner "salvia-httpd" hParser onerror $ do session <- hSession sessions 300 hHead $ handler session hPrinter hLog count stdout hCounter count where onerror err = do hError BadRequest sendStrLn [] sendStrLn err