]> gitweb @ CieloNegro.org - Rakka.git/commitdiff
Bugfix regarding with URI escaping
authorPHO <pho@cielonegro.org>
Thu, 18 Feb 2010 16:12:49 +0000 (01:12 +0900)
committerPHO <pho@cielonegro.org>
Thu, 18 Feb 2010 16:12:49 +0000 (01:12 +0900)
Rakka/Resource/Object.hs
Rakka/Resource/PageEntity.hs
Rakka/Resource/Render.hs
Rakka/Resource/TrackBack.hs

index 5f5b5c51625c97c6e7524ec8336ca05f379c0432..d4db7db60e8c894ac77e4bf142411c7e76fa3996 100644 (file)
@@ -4,12 +4,13 @@ module Rakka.Resource.Object
     )
     where
 
+import qualified Codec.Binary.UTF8.String as UTF8
 import           Network.HTTP.Lucu
-import           Network.HTTP.Lucu.Utils
 import           Rakka.Environment
 import           Rakka.Page
 import           Rakka.Storage
 import           Rakka.SystemConfig
+import           System.FilePath.Posix
 
 
 resObject :: Environment -> ResourceDef
@@ -25,7 +26,7 @@ resObject env
       }
     where
       toPageName :: [String] -> PageName
-      toPageName = decodePageName . joinWith "/" 
+      toPageName = UTF8.decodeString . joinPath
 
 
 handleGet :: Environment -> PageName -> Resource ()
index 690695e881bc73c58c6a4c1b127064112fb1e81a..a1d4b02e85da6c2430dad72d61c60d7a7d7d2097 100644 (file)
@@ -28,22 +28,21 @@ import           Text.XML.HXT.XPath
 
 fallbackPageEntity :: Environment -> [String] -> IO (Maybe ResourceDef)
 fallbackPageEntity env path
-    | null path                  = return Nothing
-    | null $ head path           = return Nothing
-    | isLower $ head $ head path = return Nothing -- 先頭の文字が小文字であってはならない
+    | null name           = return Nothing
+    | isLower $ head name = return Nothing -- 先頭の文字が小文字であってはならない
     | otherwise
         = return $ Just $ ResourceDef {
             resUsesNativeThread = False
           , resIsGreedy         = True
-          , resGet              = Just $ handleGet    env (toPageName path)
+          , resGet              = Just $ handleGet    env name
           , resHead             = Nothing
           , resPost             = Nothing
-          , resPut              = Just $ handlePut    env (toPageName path)
-          , resDelete           = Just $ handleDelete env (toPageName path)
+          , resPut              = Just $ handlePut    env name
+          , resDelete           = Just $ handleDelete env name
           }
     where
-      toPageName :: [String] -> PageName
-      toPageName = decodePageName . dropExtension . joinPath
+      name :: PageName
+      name = (dropExtension . UTF8.decodeString . joinPath) path
 
 
 handleGet :: Environment -> PageName -> Resource ()
index 18a7dc59487dd646621324dc74f4e433894e424d..64c159e495c39fc2aae2b88dc67ba501370c0cfc 100644 (file)
@@ -3,18 +3,19 @@ module Rakka.Resource.Render
     )
     where
 
+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
 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
@@ -36,7 +37,7 @@ resRender env
       }
     where
       toPageName :: [String] -> PageName
-      toPageName = decodePageName . joinWith "/" 
+      toPageName = UTF8.decodeString . joinPath
 
 
 {-
index 260d22298605a504269eba8e4b4605c0e6b10f1e..1bcdbf959156389126454391866ba75be8ac7622 100644 (file)
@@ -14,7 +14,6 @@ import           Network.Browser
 import           Network.HTTP
 import           Network.HTTP.Lucu
 import           Network.HTTP.Lucu.Response
-import           Network.HTTP.Lucu.Utils
 import           Network.URI
 import           Rakka.Environment
 import           Rakka.Page
@@ -47,7 +46,7 @@ resTrackBack env
       }
     where
       toPageName :: [String] -> PageName
-      toPageName = decodePageName . joinWith "/"
+      toPageName = UTF8.decodeString . joinPath
 
 
 handlePost :: Environment -> PageName -> Resource ()