module Hack.Handler.Kibro (run) where
import Hack
import Kibro
import Network.CGI hiding (Html)
import Network.URI
import Data.Default
import Prelude hiding ((.), (^))
import MPS
get_env = do
uri <- requestURI
request_method' <- requestMethod
let script_name' = ""
let path_info' = uri.uriPath
let query_string' = uri.uriQuery
server_name' <- serverName
server_port' <- serverPort
hack_input' <- getBody
def
{ request_method = request_method'.read
, script_name = script_name'
, path_info = path_info'
, query_string = query_string'.remove_question_mark
, server_name = server_name'
, server_port = server_port'
, hack_input = hack_input'
}
.return
where
remove_question_mark = dropWhile (is '?')
handle app = do
env <- get_env
response <- app env .liftIO
response.headers.mapM_ (splash setHeader)
response.status.show.setHeader "Status"
response.body.output
run :: Application -> IO ()
run app = startKibro [("", handle app)]