packages feed

breve-0.4.0.0: src/Main.hs

{-# LANGUAGE OverloadedStrings, NamedFieldPuns #-}

import Application
import Breve.Settings
import Breve.UrlTable

import Web.Spock.Safe
import Network.Wai.Handler.WarpTLS (runTLS, TLSSettings)
import Network.Wai.Handler.Warp    (defaultSettings, setPort)

runBreve :: TLSSettings -> Int -> SpockT IO () -> IO ()
runBreve tls port spock =
  spockAsApp (spockT id spock) >>= runTLS tls settings
  where settings = setPort port defaultSettings

main :: IO ()
main = do
  AppSettings { bindUrl
              , bindPort
              , urlTable
              , tlsSetts } <- settings
  table                    <- load urlTable
  putStrLn ("Serving on " ++ bindUrl)
  runBreve tlsSetts bindPort (app bindUrl table)