module Happstack.Server.SimpleTLS
( TLSConf(..)
, nullTLSConf
, simpleHTTPS
, simpleHTTPS'
) where
import Data.Maybe (fromMaybe)
import Happstack.Server (ToMessage(..), UnWebT, ServerPartT, simpleHTTP'', mapServerPartT, runValidator)
import Happstack.Server.Internal.Cryptonite.TLS (TLSConf(..), nullTLSConf, listenTLS)
-- |start the https:\/\/ server, and handle requests using the supplied
-- 'ServerPart'.
--
-- This function will not return, though it may throw an exception.
--
simpleHTTPS :: (ToMessage a) =>
TLSConf -- ^ tls server configuration
-> ServerPartT IO a -- ^ server part to run
-> IO ()
simpleHTTPS = simpleHTTPS' id
-- | similar 'simpleHTTPS' but allows you to supply a function to convert 'm' to 'IO'.
simpleHTTPS' :: (ToMessage b, Monad m, Functor m) =>
(UnWebT m a -> UnWebT IO b)
-> TLSConf
-> ServerPartT m a
-> IO ()
simpleHTTPS' toIO tlsConf hs =
listenTLS tlsConf (\req -> runValidator (fromMaybe return (tlsValidator tlsConf)) =<< (simpleHTTP'' (mapServerPartT toIO hs) req))