packages feed

keter-1.0.1: incoming/foo/hello.hs

{-# LANGUAGE OverloadedStrings #-}
import System.Environment
import qualified Data.ByteString.Lazy.Char8 as L8
import Network.Wai
import Network.Wai.Handler.Warp
import Network.HTTP.Types
import System.Directory
import Control.Monad.IO.Class
import System.IO
import Network.Wai.Middleware.RequestLogger
import Data.Default

main :: IO ()
main = do
    fp <- canonicalizePath "."
    [msg] <- getArgs
    portS <- getEnv "PORT"
    env <- getEnvironment
    let port = read portS
    logger <- mkRequestLogger def
        { outputFormat = Apache FromHeader
        }
    run port $ logger $ \req -> do
        liftIO $ putStrLn $ "Received a request at: " ++ show (pathInfo req)
        liftIO $ hFlush stdout
        liftIO $ hPutStrLn stderr $ "Testing standard error"
        liftIO $ hFlush stderr
        return $ responseLBS status200 [("content-type", "text/plain")] $ L8.pack $ unlines
            $ ("Message: " ++ msg)
            : ("Path: " ++ fp)
            : ("Headers: " ++ show (requestHeaders req))
            : map (\(k, v) -> concat
                [ "Env: "
                , k
                , " = "
                , v
                ]) env