module Network.Salvia.Handlers.Banner (hBanner) where import Control.Monad.State import Data.Record.Label import Data.Time.Clock (getCurrentTime) import Data.Time.Format (formatTime) import Data.Time.LocalTime (getCurrentTimeZone, utcToLocalTime) import Network.Protocol.Http import Network.Salvia.Httpd import System.Locale (defaultTimeLocale) -- | The 'hBanner' handler adds the current date-/timestamp and a custom server -- name to the response headers. hBanner :: String -- ^ The HTTP server name. -> Handler () hBanner sv = do dt <- lift $ do zone <- getCurrentTimeZone time <- liftM (utcToLocalTime zone) getCurrentTime return $ formatTime defaultTimeLocale "%a, %d %b %Y %H:%M:%S %Z" time enterM response $ do setM date dt setM server sv