]> 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
 
     )
     where
 
+import qualified Codec.Binary.UTF8.String as UTF8
 import           Network.HTTP.Lucu
 import           Network.HTTP.Lucu
-import           Network.HTTP.Lucu.Utils
 import           Rakka.Environment
 import           Rakka.Page
 import           Rakka.Storage
 import           Rakka.SystemConfig
 import           Rakka.Environment
 import           Rakka.Page
 import           Rakka.Storage
 import           Rakka.SystemConfig
+import           System.FilePath.Posix
 
 
 resObject :: Environment -> ResourceDef
 
 
 resObject :: Environment -> ResourceDef
@@ -25,7 +26,7 @@ resObject env
       }
     where
       toPageName :: [String] -> PageName
       }
     where
       toPageName :: [String] -> PageName
-      toPageName = decodePageName . joinWith "/" 
+      toPageName = UTF8.decodeString . joinPath
 
 
 handleGet :: Environment -> PageName -> Resource ()
 
 
 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
 
 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
     | otherwise
         = return $ Just $ ResourceDef {
             resUsesNativeThread = False
           , resIsGreedy         = True
-          , resGet              = Just $ handleGet    env (toPageName path)
+          , resGet              = Just $ handleGet    env name
           , resHead             = Nothing
           , resPost             = Nothing
           , 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
           }
     where
-      toPageName :: [String] -> PageName
-      toPageName = decodePageName . dropExtension . joinPath
+      name :: PageName
+      name = (dropExtension . UTF8.decodeString . joinPath) path
 
 
 handleGet :: Environment -> PageName -> Resource ()
 
 
 handleGet :: Environment -> PageName -> Resource ()
index 18a7dc59487dd646621324dc74f4e433894e424d..64c159e495c39fc2aae2b88dc67ba501370c0cfc 100644 (file)
@@ -3,18 +3,19 @@ module Rakka.Resource.Render
     )
     where
 
     )
     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           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           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
 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
       }
     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
 import           Network.HTTP.Lucu
 import           Network.HTTP.Lucu.Response
-import           Network.HTTP.Lucu.Utils
 import           Network.URI
 import           Rakka.Environment
 import           Rakka.Page
 import           Network.URI
 import           Rakka.Environment
 import           Rakka.Page
@@ -47,7 +46,7 @@ resTrackBack env
       }
     where
       toPageName :: [String] -> PageName
       }
     where
       toPageName :: [String] -> PageName
-      toPageName = decodePageName . joinWith "/"
+      toPageName = UTF8.decodeString . joinPath
 
 
 handlePost :: Environment -> PageName -> Resource ()
 
 
 handlePost :: Environment -> PageName -> Resource ()