1 module HTTP.Form.Data 2 ( FormData(..) 3 ) where 4 5 import Control.Applicative ((<|>)) 6 import qualified Data.Aeson as JSON 7 import qualified Data.ByteString as BS 8 import qualified Data.Map.Strict as Map 9 import Network.Wai.Parse (FileInfo) 10 11 data FormData a = FormData 12 { formDataQuery :: Map.Map BS.ByteString (Maybe BS.ByteString) 13 , formDataPost :: Map.Map BS.ByteString BS.ByteString 14 , formDataJSON :: Maybe JSON.Value 15 , formDataFiles :: Map.Map BS.ByteString (FileInfo a) 16 } 17 18 instance Monoid (FormData a) where 19 mempty = FormData mempty mempty Nothing mempty 20 mappend (FormData q1 p1 j1 f1) (FormData q2 p2 j2 f2) = 21 FormData (mappend q1 q2) (mappend p1 p2) (j1 <|> j2) (mappend f1 f2) 22