{-# 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 qualified Text.HTML.DOM as HTML 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 <- HTML.readFile 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!"