X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FResource%2FObject.hs;h=b46a86a30a330bbdcdbb412f09def05d66c50d86;hb=bf15724655b75bf1b8f0fdabb111c158a91680a8;hp=b029e5422900b69e1b41d4459016f680a6b0dda2;hpb=ddf0b4d7ab2f1e141edbc7ef75d39853c0846f8c;p=Rakka.git diff --git a/Rakka/Resource/Object.hs b/Rakka/Resource/Object.hs index b029e54..b46a86a 100644 --- a/Rakka/Resource/Object.hs +++ b/Rakka/Resource/Object.hs @@ -1,9 +1,9 @@ +-- -*- Coding: utf-8 -*- module Rakka.Resource.Object ( resObject ) where -import Data.ByteString.Char8 as C8 import Data.Maybe import Network.HTTP.Lucu import Network.HTTP.Lucu.Utils @@ -11,7 +11,6 @@ import Rakka.Environment import Rakka.Page import Rakka.Storage import Rakka.SystemConfig -import System.Time resObject :: Environment -> ResourceDef @@ -32,16 +31,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 {- @@ -60,15 +56,11 @@ handleRedirect env redir ... -} -handleGetEntity :: Environment -> Page -> Resource () -handleGetEntity env page - = do let lastMod = toClockTime $ pageLastMod page - - case pageRevision page of - 0 -> foundTimeStamp lastMod -- 0 はデフォルトページ - 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) - setHeader (C8.pack "Content-Disposition") - (C8.pack $ "attachment; filename=" ++ quoteStr (pageFileName' page)) - outputLBS (pageContent page) + setContentType (entityType page) + outputLBS (entityContent page)