packages feed

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

module Network.Salvia.Handlers.Banner (hBanner) where

import Control.Monad.State
import Data.Time.Clock (getCurrentTime)
import Data.Time.LocalTime (getCurrentTimeZone, utcToLocalTime)
import Data.Time.Format (formatTime)
import System.Locale (defaultTimeLocale)

import Network.Salvia.Httpd
import Network.Protocol.Http

-- | 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 server = do
  date <- lift $ do
    zone <- getCurrentTimeZone
    time <- liftM (utcToLocalTime zone) getCurrentTime
    return $ formatTime defaultTimeLocale "%a, %d %b %Y %H:%M:%S %Z" time
  modResponse
    $ setDate   date
    . setServer server