X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Rakka.git;a=blobdiff_plain;f=Rakka%2FResource.hs;h=963101ff1f5220b0f562ce61a0c05b5268c62739;hp=26d73897e544cc1ec13d3553913bff5bf214da15;hb=7dc6971beb8a9c9fc36a7275d03abf1f1f7c25e5;hpb=23977989ef4be7316b1c2c3f709ca1e8e6bb7f84 diff --git a/Rakka/Resource.hs b/Rakka/Resource.hs index 26d7389..963101f 100644 --- a/Rakka/Resource.hs +++ b/Rakka/Resource.hs @@ -3,6 +3,7 @@ module Rakka.Resource , runXmlA , getEntityType , outputXmlPage + , outputXmlPage' , getUserID ) where @@ -127,18 +128,18 @@ getEntityType where extMap :: [(String, MIMEType)] extMap = [ ("html", read "application/xhtml+xml") + , ( "rdf", read "application/rdf+xml" ) , ( "xml", read "text/xml" ) ] -outputXmlPage :: XmlTree -> IOSArrow XmlTree XmlTree -> Resource () -outputXmlPage tree toXHTML +outputXmlPage :: XmlTree -> [(MIMEType, IOSArrow XmlTree XmlTree)] -> Resource () +outputXmlPage tree formatters = do mType <- getEntityType setContentType mType - let formatter = case mType of - MIMEType "application" "xhtml+xml" _ -> toXHTML - MIMEType "text" "xml" _ -> this - _ -> undefined + let formatter = case lookup mType formatters of + Just f -> f + Nothing -> this [resultStr] <- liftIO $ runX ( setErrorMsgHandler False fail >>> constA tree @@ -150,6 +151,11 @@ outputXmlPage tree toXHTML output resultStr +outputXmlPage' :: XmlTree -> IOSArrow XmlTree XmlTree -> Resource () +outputXmlPage' tree toXHTML + = outputXmlPage tree [(MIMEType "application" "xhtml+xml" [], toXHTML)] + + getUserID :: Environment -> Resource (Maybe String) getUserID env = do auth <- getAuthorization