packages feed

hack-handler-happstack 2009.4.50 → 2009.4.51

raw patch · 3 files changed

+71/−3 lines, 3 files

Files

changelog.md view
@@ -1,3 +1,11 @@+2009.4.51+-----------++### Fix++* translate lowercase header to normal header for env+* don't get server name, that cause a crash+ 2009.4.50 --------- 
hack-handler-happstack.cabal view
@@ -1,5 +1,5 @@ Name:                 hack-handler-happstack-Version:              2009.4.50+Version:              2009.4.51 Build-type:           Simple Synopsis:             Hyena Kibro handler Description:          Hyena Kibro handler
src/Hack/Handler/Happstack.hs view
@@ -10,6 +10,7 @@ import Control.Monad.Trans import Data.List import Data.Char+import Data.Maybe  import qualified Data.Map as M import qualified Data.ByteString.Lazy.Char8 as C@@ -36,7 +37,7 @@           , script_name = ""           , path_info = "/" ++ (intercalate "/" $ rqPaths req)           , query_string = rqQuery req-          , server_name = fst $ rqPeer req+          , server_name = "" -- fst $ rqPeer req           , server_port = port conf'           , http = toHttp (rqHeaders req)           , hack_input = (\(Body x) -> C.unpack x) (rqBody req)@@ -58,7 +59,7 @@ toHttp = M.toList >>> map snd >>> map headerToPair  headerToPair :: HeaderPair -> (String, String)-headerToPair (HeaderPair k v) = (b2s k, intercalate " " $ map b2s v)+headerToPair (HeaderPair k v) = (translate_header $ b2s k, intercalate " " $ map b2s v)   where b2s x = map I.w2c $ L.unpack x  toHappstackResponse :: Hack.Response -> Happstack.Response@@ -77,3 +78,62 @@     c2b x = L.pack $ map I.c2w x    +-- happstack convert all request header to lowercase ...++translate_header :: String -> String+translate_header s = fromMaybe s $ find (map toLower >>> (== s) ) header_list++header_list :: [String]+header_list = +  [    "Cache-Control"        +  ,    "Connection"           +  ,    "Date"                 +  ,    "Pragma"               +  ,    "Transfer-Encoding"    +  ,    "Upgrade"              +  ,    "Via"                  +  ,    "Accept"               +  ,    "Accept-Charset"       +  ,    "Accept-Encoding"      +  ,    "Accept-Language"      +  ,    "Authorization"        +  ,    "Cookie"               +  ,    "Expect"               +  ,    "From"                 +  ,    "Host"                 +  ,    "If-Modified-Since"    +  ,    "If-Match"             +  ,    "If-None-Match"        +  ,    "If-Range"             +  ,    "If-Unmodified-Since"  +  ,    "Max-Forwards"         +  ,    "Proxy-Authorization"  +  ,    "Range"                +  ,    "Referer"              +  ,    "User-Agent"           +  ,    "Age"                  +  ,    "Location"             +  ,    "Proxy-Authenticate"   +  ,    "Public"               +  ,    "Retry-After"          +  ,    "Server"               +  ,    "Set-Cookie"           +  ,    "TE"                   +  ,    "Trailer"              +  ,    "Vary"                 +  ,    "Warning"              +  ,    "WWW-Authenticate"     +  ,    "Allow"                +  ,    "Content-Base"         +  ,    "Content-Encoding"     +  ,    "Content-Language"     +  ,    "Content-Length"       +  ,    "Content-Location"     +  ,    "Content-MD5"          +  ,    "Content-Range"        +  ,    "Content-Type"         +  ,    "ETag"                 +  ,    "Expires"              +  ,    "Last-Modified"        +  ,    "Content-Transfer-Encodeing"+  ]