+-- -*- Coding: utf-8 -*-
module Rakka.Resource.Object
( resObject
)
import Rakka.Page
import Rakka.Storage
import Rakka.SystemConfig
-import System.Time
resObject :: Environment -> ResourceDef
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 _ _ _ _)
+ Just redir@(Redirection _ _ _ _ _)
-> handleRedirect env redir
- Just entity@(Entity _ _ _ _ _ _ _ _ _ _ _ _ _ _)
- -> handleGetEntity env entity
+ Just entity@(Entity _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
+ -> handleGetEntity entity
{-
...
-}
-handleGetEntity :: Environment -> Page -> Resource ()
-handleGetEntity env page
- = do let lastMod = toClockTime $ pageLastMod page
+handleGetEntity :: Page -> Resource ()
+handleGetEntity page
+ = do case entityRevision page of
+ 0 -> foundTimeStamp (entityLastMod page) -- 0 はデフォルトページ
+ rev -> foundEntity (strongETag $ show rev) (entityLastMod page)
- case pageRevision page of
- 0 -> foundTimeStamp lastMod -- 0 はデフォルトページ
- rev -> foundEntity (strongETag $ show rev) lastMod
-
- setContentType (pageType page)
+ setContentType (entityType page)
setHeader (C8.pack "Content-Disposition")
- (C8.pack $ "attachment; filename=" ++ quoteStr (pageFileName' page))
- outputLBS (pageContent page)
+ (C8.pack $ "attachment; filename=" ++ quoteStr (entityFileName' page))
+ outputLBS (entityContent page)