]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Resource/Object.hs
Resurrection from slight bitrot.
[Rakka.git] / Rakka / Resource / Object.hs
index 73f299bb955e39d628c7877c25175f0629d381c1..5f5b5c51625c97c6e7524ec8336ca05f379c0432 100644 (file)
@@ -1,3 +1,4 @@
+-- -*- Coding: utf-8 -*-
 module Rakka.Resource.Object
     ( resObject
     )
@@ -9,8 +10,6 @@ import           Rakka.Environment
 import           Rakka.Page
 import           Rakka.Storage
 import           Rakka.SystemConfig
-import           System.FilePath
-import           System.Time
 
 
 resObject :: Environment -> ResourceDef
@@ -31,16 +30,13 @@ resObject env
 
 handleGet :: Environment -> PageName -> Resource ()
 handleGet env name
-    = do pageM <- getPage (envStorage env) name
+    = do pageM <- getPage (envStorage env) name Nothing
          case pageM of
-           Nothing
-               -> foundNoEntity Nothing
-
-           Just redir@(Redirection _ _ _ _)
-               -> handleRedirect env redir
-
-           Just entity@(Entity _ _ _ _ _ _ _ _ _ _ _ _)
-               -> handleGetEntity env entity
+           Nothing   -> foundNoEntity Nothing
+           Just page -> if isEntity page then
+                            handleGetEntity page
+                        else
+                            handleRedirect env page
 
 
 {-
@@ -49,7 +45,7 @@ handleGet env name
 -}
 handleRedirect :: Environment -> Page -> Resource ()
 handleRedirect env redir
-    = do BaseURI baseURI <- getSysConf (envSysConf env) (BaseURI undefined)
+    = do BaseURI baseURI <- getSysConf (envSysConf env)
          redirect Found (mkObjectURI baseURI $ redirName redir)
 
 
@@ -59,13 +55,11 @@ handleRedirect env redir
   
   ...
 -}
-handleGetEntity :: Environment -> Page -> Resource ()
-handleGetEntity env page
-    = do let lastMod = toClockTime $ pageLastMod page
-
-         case pageRevision page of
-           Nothing  -> foundTimeStamp lastMod
-           Just rev -> foundEntity (strongETag $ show rev) lastMod
+handleGetEntity :: Page -> Resource ()
+handleGetEntity page
+    = do case entityRevision page of
+           0   -> foundTimeStamp (entityLastMod page) -- 0 はデフォルトページ
+           rev -> foundEntity (strongETag $ show rev) (entityLastMod page)
 
-         setContentType (pageType    page)
-         outputLBS      (pageContent page)
+         setContentType (entityType page)
+         outputLBS (entityContent page)