module Main where import Data.Maybe (fromMaybe) import URI import System (getArgs) import HTTP import Browser import Socket (withSocketsDo) import Char main :: IO () main = withSocketsDo $ do browse fn fn = let rq = defaultGETRequest $ fromMaybe (error "???") (parseURI "http://localhost/index.html") in do (uri, rsp) <- request rq out (rspBody rsp) fn1 = let rq = defaultGETRequest $ fromMaybe (error "???") (parseURI "http://localhost/index.html") in do (uri, rsp) <- request rq return rsp type TagAttr = (String, String) type TagAttrl = [TagAttr] convertResponse r = cvResponseCode (rspCode r) ++ cvResponseReason (rspReason r) : cvResponseHeaders (rspHeaders r) ++ [("Content", rspBody r)] where cvResponseCode :: (Int, Int, Int) -> TagAttrl cvResponseCode (a, b, c) = [ ("Status", map intToDigit [a,b,c]) , ("Protocol-Version", httpVersion) ] cvResponseReason :: String -> TagAttr cvResponseReason r = ("Reason", r) cvResponseHeaders :: [Header] -> TagAttrl cvResponseHeaders = map cvResponseHeader cvResponseHeader :: Header -> TagAttr cvResponseHeader (Header name value) = (show name, value)