]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Resource/Object.hs
Resurrection from slight bitrot.
[Rakka.git] / Rakka / Resource / Object.hs
index cd2c36463d93f8975db6bf9e9dee26b70ffdb62f..5f5b5c51625c97c6e7524ec8336ca05f379c0432 100644 (file)
@@ -4,8 +4,6 @@ module Rakka.Resource.Object
     )
     where
 
-import           Data.ByteString.Char8 as C8
-import           Data.Maybe
 import           Network.HTTP.Lucu
 import           Network.HTTP.Lucu.Utils
 import           Rakka.Environment
@@ -34,14 +32,11 @@ handleGet :: Environment -> PageName -> Resource ()
 handleGet 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 entity
+           Nothing   -> foundNoEntity Nothing
+           Just page -> if isEntity page then
+                            handleGetEntity page
+                        else
+                            handleRedirect env page
 
 
 {-
@@ -62,11 +57,9 @@ handleRedirect env redir
 -}
 handleGetEntity :: Page -> Resource ()
 handleGetEntity page
-    = do case pageRevision page of
-           0   -> foundTimeStamp (pageLastMod page) -- 0 はデフォルトページ
-           rev -> foundEntity (strongETag $ show rev) (pageLastMod page)
+    = do case entityRevision page of
+           0   -> foundTimeStamp (entityLastMod page) -- 0 はデフォルトページ
+           rev -> foundEntity (strongETag $ show rev) (entityLastMod page)
 
-         setContentType (pageType page)
-         setHeader (C8.pack "Content-Disposition")
-                       (C8.pack $ "attachment; filename=" ++ quoteStr (pageFileName' page))
-         outputLBS (pageContent page)
+         setContentType (entityType page)
+         outputLBS (entityContent page)