]> gitweb @ CieloNegro.org - Rakka.git/blob - Rakka/Resource/Page.hs
6d8c7d52312facf1ee629c0d00d21c3f3fc8a48c
[Rakka.git] / Rakka / Resource / Page.hs
1 module Rakka.Resource.Page
2     ( fallbackPage
3     )
4     where
5
6 import           Data.Char
7 import           Network.HTTP.Lucu
8 import           Network.HTTP.Lucu.Utils
9 import           Rakka.Environment
10 import           Rakka.Page
11 import           Rakka.Resource.Page.Get
12 import           System.FilePath
13
14
15 fallbackPage :: Environment -> [String] -> IO (Maybe ResourceDef)
16 fallbackPage env path
17     | null path                        = return Nothing
18     | null $ head path                 = return Nothing
19     | not $ isUpper $ head $ head path = return Nothing -- /Foo/bar のような形式でない。
20     | otherwise
21         = return $ Just $ ResourceDef {
22             resUsesNativeThread = False
23           , resIsGreedy         = True
24           , resGet              = Just $ handleGet env (toPageName path)
25           , resHead             = Nothing
26           , resPost             = Nothing
27           , resPut              = Just $ handlePut env (toPageName path)
28           , resDelete           = Just $ handleDelete env (toPageName path)
29           }
30     where
31       toPageName :: [String] -> PageName
32       toPageName = decodePageName . dropExtension . joinWith "/"
33
34
35 handlePut :: Environment -> PageName -> Resource ()
36 handlePut = fail "FIXME: not implemented"
37
38
39 handleDelete :: Environment -> PageName -> Resource ()
40 handleDelete = fail "FIXME: not implemented"