on warp-3.2.27-conn-closed-by-pear help sign in
25 lines 971 B history raw
1{-# LANGUAGE OverloadedStrings #-}
2import qualified Network.HTTP.Enumerator as H
3import qualified Network.Wai as W
4import Network.Wai.Middleware.Gzip (gzip)
5import Network.Wai.Handler.SimpleServer (run)
6import qualified Data.ByteString.Char8 as S8
7import qualified Data.ByteString.Lazy.Char8 ()
8import Data.Enumerator (($$), joinI, run_)
9import Blaze.ByteString.Builder (fromByteString)
10import qualified Data.Enumerator as E
12main :: IO ()
13main = run 3000 $ gzip False app
15app :: W.Application
16app W.Request { W.pathInfo = path } =
17 case H.parseUrl $ "http://wiki.yesodweb.com" ++ S8.unpack path of
18 Nothing -> return notFound
19 Just hreq -> return $ W.ResponseEnumerator $ run_ . H.http hreq . go
20 where
21 go f s h = joinI $ E.map fromByteString $$ f s $ filter safe h
22 safe (x, _) = not $ x `elem` ["Content-Encoding", "Transfer-Encoding"]
24notFound :: W.Response
25notFound = W.ResponseLBS W.status404 [("Content-Type", "text/plain")] "Not found"