import Control.Monad.Trans
import Network.HTTP.Lucu
import Network.HTTP.Lucu.Utils
-import Network.URI
+import Network.URI hiding (path)
import Text.XML.HXT.Arrow.WriteDocument
import Text.XML.HXT.Arrow.XmlIOStateArrow
import Text.XML.HXT.DOM.TypeDefs
import Text.XML.HXT.DOM.XmlKeywords
--- / ==> /
--- /foo ==> /foo.html
--- /foo/ ==> /foo.html
--- /foo.bar/ ==> /foo.bar
--- /foo.bar ==> /foo.bar
+-- "/" ==> "/"
+-- "/foo" ==> "/foo.html"
+-- "/foo/" ==> "/foo.html"
+-- "/foo.bar/" ==> "/foo.bar"
+-- "/foo.bar" ==> "/foo.bar"
canonicalizeURI :: Resource ()
canonicalizeURI
= do uri <- getRequestURI
outputXmlPage tree toXHTML
= do mType <- getEntityType
setContentType mType
- let formatter = if mType == read "text/xml" then
- this
- else
- toXHTML
+ let formatter = case mType of
+ MIMEType "application" "xhtml+xml" _ -> toXHTML
+ MIMEType "text" "xml" _ -> this
+ _ -> undefined
[resultStr] <- liftIO $ runX ( setErrorMsgHandler False fail
>>>
constA tree