module Network.Soap where
import Network.Curl 
import Data.IORef

soapMessage header body = "<?xml version=\"1.0\"?><env:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><env:Header>"++header++"</env:Header><env:Body>"++body++"</env:Body></env:Envelope>"

soapPost::URLString->[String]->IO (CurlCode,String)
soapPost url message = initialize >>= \ h -> do
  ref <- newIORef []
  setopts h [(CurlVerbose False),(CurlHttpHeaders ["SOAPAction: shoap"]),(CurlPostFields message),(CurlCookieJar "cookies"),(CurlURL url),(CurlWriteFunction (gatherOutput ref))]
  rc<-perform h
  lss<-readIORef ref
  return (rc, concat $ reverse lss)