import Control.Arrow.ArrowIO
import Control.Arrow.ArrowList
import Control.Monad.Trans
-import qualified Codec.Binary.UTF8.String as UTF8
import qualified Data.ByteString.Lazy as Lazy
-import qualified Data.Map as M
+import Data.Maybe
import Network.HTTP.Lucu
import Network.HTTP.Lucu.Utils
+import OpenSSL.EVP.Base64
import Rakka.Environment
import Rakka.Page
import Rakka.Utils
-import Rakka.Wiki
import Rakka.Wiki.Engine
-import Rakka.Wiki.Parser
-import Rakka.Wiki.Interpreter
-import Text.ParserCombinators.Parsec
import Text.XML.HXT.Arrow.Namespace
import Text.XML.HXT.Arrow.WriteDocument
import Text.XML.HXT.Arrow.XmlArrow
-}
handleRender :: Environment -> PageName -> Resource ()
handleRender env name
- = do bin <- inputLBS defaultLimit
+ = do entity <- inputLBS defaultLimit
cTypeM <- getContentType
- let cType = case cTypeM of
- Just t -> t
- Nothing -> guessMIMEType bin
+ let (bin, cType) = case cTypeM of
+ Just (MIMEType "application" "x-rakka-base64-stream" _)
+ -> let b = decodeBase64LBS entity
+ in
+ (b, guessMIMEType b)
+ Just t
+ -> (entity, t)
+ Nothing
+ -> (entity, guessMIMEType entity)
setContentType $ read "text/xml"
[xmlStr] <- liftIO $ runX ( setErrorMsgHandler False fail