X-Git-Url: https://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FResource%2FRender.hs;h=778ca2114dba15d8945674510b1c70abc70c3a55;hb=d128bc12ae9f763c37941122bf2e163517810bba;hp=670edd88273aef65dade948c1a6627a5d04fa73d;hpb=736016f6e7b9c4ce5cec6d2fe82f8d2911783f8f;p=Rakka.git diff --git a/Rakka/Resource/Render.hs b/Rakka/Resource/Render.hs index 670edd8..778ca21 100644 --- a/Rakka/Resource/Render.hs +++ b/Rakka/Resource/Render.hs @@ -3,23 +3,19 @@ module Rakka.Resource.Render ) where +import qualified Codec.Binary.Base64 as B64 import Control.Arrow 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 qualified Data.ByteString.Lazy as Lazy (ByteString, pack) +import qualified Data.ByteString.Lazy.Char8 as L8 hiding (ByteString) import Network.HTTP.Lucu import Network.HTTP.Lucu.Utils 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 @@ -66,12 +62,18 @@ resRender env -} 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 = Lazy.pack $ B64.decode $ L8.unpack entity + in + (b, guessMIMEType b) + Just t + -> (entity, t) + Nothing + -> (entity, guessMIMEType entity) setContentType $ read "text/xml" [xmlStr] <- liftIO $ runX ( setErrorMsgHandler False fail