Skip to content

Instantly share code, notes, and snippets.

@moonmaster9000
Created August 1, 2010 10:59
Show Gist options
  • Save moonmaster9000/503217 to your computer and use it in GitHub Desktop.
Save moonmaster9000/503217 to your computer and use it in GitHub Desktop.
import qualified Data.ByteString as B
main :: IO ()
main = do
td <- newTemplateDirectory' "templates" emptyTemplateState
quickServer $ templateHandler td defaultReloadHandler $ \ts ->
route [ ("echo/:s", echoHandler)
] <|>
templateServe ts <|>
dir "static" (fileServe ".")
echoHandler :: Snap ()
echoHandler = do
s <- getParam "s"
case s of
Just s' -> if (B.length s' == 4) then badWord else (writeBS s')
_ -> writeBS ""
where
badWord = do
putResponse $
setResponseStatus 403 "Forbidden" emptyResponse
writeBS "Forbidden: four-letter word"
r <- getResponse
finishWith r
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment