)
where
+import Data.ByteString.Char8 as C8
+import Data.Maybe
import Network.HTTP.Lucu
import Network.HTTP.Lucu.Utils
import Rakka.Environment
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 _ _ _ _ _ _ _ _ _ _ _ _ _)
+ Just entity@(Entity _ _ _ _ _ _ _ _ _ _ _ _ _ _)
-> handleGetEntity env entity
-}
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)
= do let lastMod = toClockTime $ pageLastMod page
case pageRevision page of
- Nothing -> foundTimeStamp lastMod
- Just rev -> foundEntity (strongETag $ show rev) lastMod
+ 0 -> foundTimeStamp lastMod -- 0 はデフォルトページ
+ rev -> foundEntity (strongETag $ show rev) lastMod
- setContentType (pageType page)
- outputLBS (pageContent page)
+ setContentType (pageType page)
+ setHeader (C8.pack "Content-Disposition")
+ (C8.pack $ "attachment; filename=" ++ quoteStr (pageFileName' page))
+ outputLBS (pageContent page)