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