X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FMultipartForm.hs;h=10d1f64276f07307c581e66d463492c3ef7358d6;hp=4dcf076c93c13be34f7fd3bc0986f24652601616;hb=05f49fa;hpb=02d702c138d918386135245021d5778676ee6d0e diff --git a/Network/HTTP/Lucu/MultipartForm.hs b/Network/HTTP/Lucu/MultipartForm.hs index 4dcf076..10d1f64 100644 --- a/Network/HTTP/Lucu/MultipartForm.hs +++ b/Network/HTTP/Lucu/MultipartForm.hs @@ -2,7 +2,6 @@ DoAndIfThenElse , OverloadedStrings , ScopedTypeVariables - , UnboxedTuples , UnicodeSyntax #-} module Network.HTTP.Lucu.MultipartForm @@ -16,15 +15,17 @@ import qualified Data.Ascii as A import Data.Attoparsec.Char8 import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Lazy.Char8 as LS -import Data.Char -import Data.List +import Data.Char +import Data.List +import Data.Map (Map) import Data.Maybe import Data.Monoid.Unicode import Data.Text (Text) -import Network.HTTP.Lucu.Headers -import Network.HTTP.Lucu.Parser.Http -import Network.HTTP.Lucu.Response -import Network.HTTP.Lucu.Utils +import Network.HTTP.Lucu.Headers +import Network.HTTP.Lucu.Parser.Http +import Network.HTTP.Lucu.RFC2231 +import Network.HTTP.Lucu.Response +import Network.HTTP.Lucu.Utils import Prelude.Unicode -- |This data type represents a form value and possibly an uploaded @@ -49,7 +50,7 @@ instance HasHeaders Part where data ContDispo = ContDispo { dType ∷ !CIAscii - , dParams ∷ ![(CIAscii, Ascii)] + , dParams ∷ !(Map CIAscii Text) } printContDispo ∷ ContDispo → Ascii @@ -57,20 +58,7 @@ printContDispo d = A.fromAsciiBuilder $ ( A.toAsciiBuilder (A.fromCIAscii $ dType d) ⊕ - ( if null $ dParams d then - (∅) - else - A.toAsciiBuilder "; " ⊕ - joinWith "; " (map printPair $ dParams d) ) ) - where - printPair ∷ (CIAscii, Ascii) → AsciiBuilder - printPair (name, value) - = A.toAsciiBuilder (A.fromCIAscii name) ⊕ - A.toAsciiBuilder "=" ⊕ - ( if BS.any ((¬) ∘ isToken) $ A.toByteString value then - quoteStr value - else - A.toAsciiBuilder value ) + printParams (dParams d) ) multipartFormP ∷ Ascii → Parser [(Text, FormData)] multipartFormP boundary