X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FResource%2FRender.hs;h=64c159e495c39fc2aae2b88dc67ba501370c0cfc;hb=98fd1cb53a837a9bda7145544c34872acb13a634;hp=c25ca586fc628cdafcd19dd176f19eec73342d3a;hpb=b444493e17ad49d60464bb5cf02898bd9198af3c;p=Rakka.git diff --git a/Rakka/Resource/Render.hs b/Rakka/Resource/Render.hs index c25ca58..64c159e 100644 --- a/Rakka/Resource/Render.hs +++ b/Rakka/Resource/Render.hs @@ -3,20 +3,19 @@ module Rakka.Resource.Render ) where -import qualified Codec.Binary.Base64 as B64 +import qualified Codec.Binary.UTF8.String as UTF8 import Control.Arrow import Control.Arrow.ArrowIO import Control.Arrow.ArrowList import Control.Monad.Trans -import qualified Data.ByteString.Lazy as Lazy (ByteString, pack) -import qualified Data.ByteString.Lazy.Char8 as L8 hiding (ByteString) -import Data.Maybe +import qualified Data.ByteString.Lazy as Lazy 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.Engine +import System.FilePath.Posix import Text.XML.HXT.Arrow.Namespace import Text.XML.HXT.Arrow.WriteDocument import Text.XML.HXT.Arrow.XmlArrow @@ -38,7 +37,7 @@ resRender env } where toPageName :: [String] -> PageName - toPageName = decodePageName . joinWith "/" + toPageName = UTF8.decodeString . joinPath {- @@ -68,7 +67,7 @@ handleRender env name let (bin, cType) = case cTypeM of Just (MIMEType "application" "x-rakka-base64-stream" _) - -> let b = Lazy.pack $ fromJust $ B64.decode $ L8.unpack entity + -> let b = decodeBase64LBS entity in (b, guessMIMEType b) Just t @@ -83,7 +82,9 @@ handleRender env name >>> render env >>> - writeDocumentToString [ (a_indent, v_1) ] + writeDocumentToString [ (a_indent , v_1) + , (a_output_encoding, utf8) + , (a_no_xml_pi , v_0) ] ) output xmlStr