packages feed

wai 0.0.1 → 0.1.0

raw patch · 2 files changed

+50/−12 lines, 2 files

Files

Network/Wai.hs view
@@ -46,12 +46,16 @@     , httpVersionToBS       -- ** Request header names     , RequestHeader (..)+    , requestHeader     , requestHeaderFromBS     , requestHeaderToBS+    , requestHeaderToLower       -- ** Response header names     , ResponseHeader (..)+    , responseHeader     , responseHeaderFromBS     , responseHeaderToBS+    , responseHeaderToLower       -- ** Response status code     , Status (..)     , statusCode@@ -69,6 +73,7 @@  import qualified Data.ByteString as B import qualified Data.ByteString.Char8 as B8+import Data.Char (toLower)  -- $show_read --@@ -165,8 +170,8 @@ -- The naming rules are simple: removing any hyphens from the actual name, and -- if there is a naming conflict with a 'ResponseHeader', prefix with Req. ----- Equality determined by conversion via 'requestHeaderToBS'. Remember, headers--- are case sensitive.+-- Equality determined by conversion via 'requestHeaderToLower'. Request+-- headers are *not* case sensitive (a change from version 0.0 of WAI). data RequestHeader =       Accept     | AcceptCharset@@ -178,11 +183,17 @@     | ReqContentType     | Host     | Referer-    | RequestHeader B.ByteString+    | RequestHeader B.ByteString B.ByteString     deriving (Show, Read) +lowerBS :: B.ByteString -> B.ByteString+lowerBS = B8.map toLower++requestHeader :: B.ByteString -> RequestHeader+requestHeader x = RequestHeader x $ lowerBS x+ instance Eq RequestHeader where-    x == y = requestHeaderToBS x == requestHeaderToBS y+    x == y = requestHeaderToLower x == requestHeaderToLower y  requestHeaderFromBS :: B.ByteString -> RequestHeader requestHeaderFromBS bs = case B8.unpack bs of@@ -196,7 +207,7 @@     "Content-Type" -> ReqContentType     "Host" -> Host     "Referer" -> Referer-    _ -> RequestHeader bs+    _ -> requestHeader bs  requestHeaderToBS :: RequestHeader -> B.ByteString requestHeaderToBS Accept = B8.pack "Accept"@@ -209,8 +220,20 @@ requestHeaderToBS ReqContentType = B8.pack "Content-Type" requestHeaderToBS Host = B8.pack "Host" requestHeaderToBS Referer = B8.pack "Referer"-requestHeaderToBS (RequestHeader bs) = bs+requestHeaderToBS (RequestHeader bs _) = bs +requestHeaderToLower :: RequestHeader -> B.ByteString+requestHeaderToLower Accept = B8.pack "accept"+requestHeaderToLower AcceptCharset = B8.pack "accept-charset"+requestHeaderToLower AcceptEncoding = B8.pack "accept-encoding"+requestHeaderToLower AcceptLanguage = B8.pack "accept-language"+requestHeaderToLower Authorization = B8.pack "authorization"+requestHeaderToLower Cookie = B8.pack "cookie"+requestHeaderToLower ReqContentLength = B8.pack "content-Length"+requestHeaderToLower ReqContentType = B8.pack "content-Type"+requestHeaderToLower Host = B8.pack "host"+requestHeaderToLower Referer = B8.pack "referer"+requestHeaderToLower (RequestHeader _ bs) = bs  -- | Headers sent from the server to the client. Clearly, this is not a -- complete list of all possible headers, but rather a selection of common@@ -219,8 +242,8 @@ -- -- if there is a naming conflict with a 'ResponseHeader', prefix with Req. ----- Equality determined by conversion via 'responseHeaderToBS'. Remember,--- headers are case sensitive.+-- Equality determined by conversion via 'responseHeaderToLower'. Response+-- headers are *not* case sensitive (a change from version 0.0 of WAI). data ResponseHeader =       ContentEncoding     | ContentLanguage@@ -231,12 +254,15 @@     | Location     | Server     | SetCookie-    | ResponseHeader B.ByteString+    | ResponseHeader B.ByteString B.ByteString      deriving (Show)  instance Eq ResponseHeader where     x == y = responseHeaderToBS x == responseHeaderToBS y +responseHeader :: B.ByteString -> ResponseHeader+responseHeader x = ResponseHeader x $ lowerBS x+ responseHeaderFromBS :: B.ByteString -> ResponseHeader responseHeaderFromBS bs = case B8.unpack bs of     "Content-Encoding" -> ContentEncoding@@ -248,7 +274,7 @@     "Location" -> Location     "Server" -> Server     "Set-Cookie" -> SetCookie-    _ -> ResponseHeader bs+    _ -> responseHeader bs  responseHeaderToBS :: ResponseHeader -> B.ByteString responseHeaderToBS ContentEncoding = B8.pack "Content-Encoding"@@ -260,7 +286,19 @@ responseHeaderToBS Location = B8.pack "Location" responseHeaderToBS Server = B8.pack "Server" responseHeaderToBS SetCookie = B8.pack "Set-Cookie"-responseHeaderToBS (ResponseHeader bs) = bs+responseHeaderToBS (ResponseHeader bs _) = bs++responseHeaderToLower :: ResponseHeader -> B.ByteString+responseHeaderToLower ContentEncoding = B8.pack "content-encoding"+responseHeaderToLower ContentLanguage = B8.pack "content-language"+responseHeaderToLower ContentLength = B8.pack "content-length"+responseHeaderToLower ContentDisposition = B8.pack "content-disposition"+responseHeaderToLower ContentType = B8.pack "content-type"+responseHeaderToLower Expires = B8.pack "expires"+responseHeaderToLower Location = B8.pack "location"+responseHeaderToLower Server = B8.pack "server"+responseHeaderToLower SetCookie = B8.pack "set-cookie"+responseHeaderToLower (ResponseHeader _ bs) = bs  -- | This attempts to provide the most common HTTP status codes, not all of -- them. Use the Status constructor when you want to create a status code not
wai.cabal view
@@ -1,5 +1,5 @@ Name:                wai-Version:             0.0.1+Version:             0.1.0 Synopsis:            Web Application Interface. Description:         Provides a common protocol for communication between web aplications and web servers. License:             BSD3