{-# LANGUAGE OverloadedStrings #-} module Main where import Network.Wai.Handler.Warp import Network.Wai import Network.HTTP.Types import System.Environment (getArgs) import Text.HTML.Form.WebApp import Text.HTML.Form import Data.Text.Lazy.Encoding (encodeUtf8) import Data.Text.Lazy (fromStrict) import qualified Data.Text as Txt import Text.XML (readFile, def) import Data.Maybe (fromJust) main :: IO () main = do args <- getArgs let (filename, ident) = case args of n:anchor:_ -> (n, anchor) [n] -> (n, "0") [] -> ("form.html", "0") doc <- Text.XML.readFile def filename runEnv 2018 $ servePage $ fromJust $ parseDocument doc $ Txt.pack ident servePage :: Form -> Application servePage form req respond = do ret <- renderPage form (pathInfo req) (queryString req) case ret of Just txt -> respond $ responseLBS status200 [] $ encodeUtf8 $ fromStrict txt Nothing -> respond $ responseLBS status404 [] "Unknown input or operation!"