{-# LANGUAGE NoMonomorphismRestriction#-}

module Hack.Handler.Kibro where

import Hack
import Kibro
import Network.CGI hiding (Html)
import Data.Default
import Prelude hiding ((.))
import MPS

get_env = do
  request_method' <- requestMethod
  script_name' <- scriptName
  path_info' <- pathInfo
  query_string' <- queryString
  server_name' <- serverName
  server_port' <- serverPort
  
  def {
    request_method = request_method'.read,
    script_name = script_name',
    path_info = path_info',
    query_string = query_string',
    server_name = server_name',
    server_port = server_port'
    }
    .return

handle app = do
  env <- get_env
  response <- app env .liftIO
  
  -- set response
  response.headers.mapM_ (splash setHeader)
  response.status.show.setHeader "Status"
  response.body.output

run app = startKibro [("", handle app)]