]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Resource.hs
implemented feed generator
[Rakka.git] / Rakka / Resource.hs
index 26d73897e544cc1ec13d3553913bff5bf214da15..963101ff1f5220b0f562ce61a0c05b5268c62739 100644 (file)
@@ -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