X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FHeaders.hs;h=f0e6ad8958bf056c30f41767263469c51a65922f;hb=c9a269666f2d60d9c5ba817e1c43b45f6d77de22;hp=d4c51d5e24ae7681e91aff273ae9c5bbc29b2e70;hpb=97295ba748af07f3b0b609f32aabdd52167d9799;p=Lucu.git diff --git a/Network/HTTP/Lucu/Headers.hs b/Network/HTTP/Lucu/Headers.hs index d4c51d5..f0e6ad8 100644 --- a/Network/HTTP/Lucu/Headers.hs +++ b/Network/HTTP/Lucu/Headers.hs @@ -57,7 +57,7 @@ class HasHeaders a where getCIHeader ∷ CIAscii → a → Maybe CIAscii {-# INLINE getCIHeader #-} - getCIHeader = ((A.toCIAscii <$>) ∘) ∘ getHeader + getCIHeader = ((cs <$>) ∘) ∘ getHeader deleteHeader ∷ CIAscii → a → a {-# INLINE deleteHeader #-} @@ -111,11 +111,12 @@ instance ConvertSuccess Headers Ascii where convertSuccess = convertSuccessVia ((⊥) ∷ AsciiBuilder) instance ConvertSuccess Headers AsciiBuilder where - {-# INLINE convertSuccess #-} + {-# INLINEABLE convertSuccess #-} convertSuccess (Headers m) = mconcat (header <$> fromFoldable m) ⊕ cs ("\x0D\x0A" ∷ Ascii) where header ∷ (CIAscii, Ascii) → AsciiBuilder + {-# INLINE header #-} header (name, value) = cs name ⊕ cs (": " ∷ Ascii) ⊕ @@ -144,7 +145,7 @@ headers = do xs ← many header return $ fromFoldable xs where header ∷ Parser (CIAscii, Ascii) - header = do name ← A.toCIAscii <$> token + header = do name ← cs <$> token void $ char ':' skipMany lws values ← content `sepBy` try lws @@ -160,7 +161,7 @@ headers = do xs ← many header joinValues ∷ [Ascii] → Ascii {-# INLINE joinValues #-} - joinValues = A.fromAsciiBuilder + joinValues = cs ∘ mconcat - ∘ intersperse (A.toAsciiBuilder "\x20") - ∘ (A.toAsciiBuilder <$>) + ∘ intersperse (cs ("\x20" ∷ Ascii) ∷ AsciiBuilder) + ∘ (cs <$>)