add getopt to support language

This commit is contained in:
Solene Rapenne 2022-08-13 21:12:22 +02:00
parent aa900ac405
commit 9a145bb042
3 changed files with 32 additions and 5 deletions

View File

@ -62,6 +62,8 @@ parse_to_gemini tab =
, mime = get_mime (tab!!0!!3)
}
get_reply :: String -> Int -> String
get_reply mime 20 =
"20 " ++ mime ++ "; \r\n"
get_reply :: String -> Int -> String -> String
get_reply mime return lang
| lang /= "" = "20 " ++ mime ++ "; lang=" ++ lang ++ " \r\n"
| lang == "" = "20 " ++ mime ++ "; \r\n"
| otherwise = "50\r\n"

28
Vger.hs
View File

@ -1,9 +1,33 @@
import Gemini
import Options.Applicative
data Sample = Sample
{ baseDir :: String
, language :: String
}
sample :: Parser Sample
sample = Sample
<$> strOption
( long "baseDir"
<> short 'd'
<> help "base directory to serve files from"
<> value "/var/gemini/")
<*> strOption
( long "language"
<> short 'l'
<> help "language to use in the response for gemini files"
<> value "")
opts :: ParserInfo Sample
opts = info (sample <**> helper)
( fullDesc)
main :: IO ()
main = do
options <- execParser opts
url <- get_request
let request = parse_to_gemini (parse_url url)
content <- read_file (file request)
putStr (get_reply (mime request) 20)
content <- read_file pathname
putStr (get_reply (mime request) 20 (language options))
putStr content

View File

@ -16,6 +16,7 @@ mkShell {
haskellPackages.mime-types
haskellPackages.HUnit
haskellPackages.utf8-string
haskellPackages.optparse-applicative
]
))
];