module HtmlFormSubmit(submitForm,HttpMethod) where import URLencode(encode,encodeQuery) import ParseURL(parseURL) import URL(joinURL,relativeURL) import Http(HttpMethod(..)) import TagAttrs(lookupAttr) import Data.Maybe(fromMaybe) import Utils2(strToLower,strToUpper) submitForm (attrs,values) = case strToUpper <$> lookupAttr "METHOD" attrs of Just "POST" -> case strToLower <$> lookupAttr "ENCTYPE" attrs of Just "multipart/form-data" -> (url,HttpPostFormData formdata) _ -> (url,HttpPost encdata) _ -> (joinURL url query,HttpGet) where url = fromMaybe (relativeURL "") (lookupAttr "ACTION" attrs >>= parseURL) query = relativeURL ("?"++encdata) formdata = [(name,value,"")|(name,value)<-values] encdata = case values of [("",s)] -> encode s _ -> encodeQuery values