packages feed

salvia-0.1: src/Network/Salvia/Handler/Banner.hs

module Network.Salvia.Handler.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