packages feed

http3-0.0.7: util/ServerX.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE Strict #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

module ServerX where

import qualified Network.HQ.Server as HQ
import qualified Network.HTTP.Types as H
import qualified Network.HTTP3.Server as H3
import qualified UnliftIO.Exception as E

import Network.QUIC

serverHQ :: Connection -> IO ()
serverHQ = serverX HQ.run

serverH3 :: Connection -> IO ()
serverH3 = serverX H3.run

serverX
    :: (Connection -> H3.Config -> H3.Server -> IO ()) -> Connection -> IO ()
serverX run conn = E.bracket H3.allocSimpleConfig H3.freeSimpleConfig $ \conf ->
    run conn conf $ \_req _aux sendResponse -> do
        let hdr =
                [ ("Content-Type", "text/html; charset=utf-8")
                , ("Server", "HaskellQuic/0.0.0")
                ]
            rsp = H3.responseBuilder H.ok200 hdr "Hello, world!"
        sendResponse rsp []