]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Resource/Render.hs
implemented binary file preview/upload
[Rakka.git] / Rakka / Resource / Render.hs
index 670edd88273aef65dade948c1a6627a5d04fa73d..778ca2114dba15d8945674510b1c70abc70c3a55 100644 (file)
@@ -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