support code 31 for directories
This commit is contained in:
parent
74803a76ca
commit
32bee65a20
58
Gemini.hs
58
Gemini.hs
|
@ -70,32 +70,42 @@ parse_to_gemini tab =
|
|||
|
||||
create_answer :: Gemini -> String -> String -> IO Answer
|
||||
create_answer (MkGemini domain file query) language basedir = do
|
||||
content <- getFile $ basedir ++ file
|
||||
case content of
|
||||
Just x -> return (MkAnswer
|
||||
{ code = 20
|
||||
, lang = language
|
||||
, mime = get_mime file
|
||||
, content = x
|
||||
})
|
||||
Nothing -> do
|
||||
content' <- getFile $ basedir ++ file ++ "/index.gmi"
|
||||
case content' of
|
||||
Just y -> return (MkAnswer
|
||||
{ code = 20
|
||||
, lang = language
|
||||
, mime = get_mime $ file ++ "/index.gmi"
|
||||
, content = y
|
||||
})
|
||||
Nothing -> return (MkAnswer
|
||||
{ code = 50
|
||||
, lang = language
|
||||
, mime = ""
|
||||
, content = "error ici " ++ basedir ++ file ++ "/index.gmi"
|
||||
})
|
||||
content <- getFile $ basedir ++ file
|
||||
case content of
|
||||
Just x -> return (MkAnswer
|
||||
{ code = 20
|
||||
, lang = language
|
||||
, mime = get_mime file
|
||||
, content = x
|
||||
})
|
||||
Nothing -> do
|
||||
content' <- getFile $ basedir ++ file ++ "index.gmi"
|
||||
case content' of
|
||||
Just y -> return (MkAnswer
|
||||
{ code = 20
|
||||
, lang = language
|
||||
, mime = get_mime $ file ++ "index.gmi"
|
||||
, content = y
|
||||
})
|
||||
Nothing -> do
|
||||
isdir <- doesDirectoryExist $ basedir ++ file
|
||||
if isdir
|
||||
then return (MkAnswer
|
||||
{ code = 31
|
||||
, lang = ""
|
||||
, mime = "/" ++ file ++ "/"
|
||||
, content = ""
|
||||
})
|
||||
else return (MkAnswer
|
||||
{ code = 50
|
||||
, lang = language
|
||||
, mime = ""
|
||||
, content = "error ici " ++ basedir ++ file ++ "/index.gmi"
|
||||
})
|
||||
|
||||
make_reply :: Answer -> String
|
||||
make_reply (MkAnswer code lang content mime)
|
||||
| lang /= "" = (show code) ++ " " ++ mime ++ "; lang=" ++ lang ++ " \r\n"
|
||||
| lang == "" = (show code) ++ " " ++ mime ++ "; \r\n"
|
||||
| code == 20 && lang == "" = (show code) ++ " " ++ mime ++ "; \r\n"
|
||||
| code == 31 = "31 " ++ mime ++ "\r\n"
|
||||
| otherwise = "50\r\n"
|
||||
|
|
Loading…
Reference in New Issue