wai.hs 822 B

123456789101112131415161718192021222324
  1. {-# LANGUAGE OverloadedStrings, BangPatterns #-}
  2. import Blaze.ByteString.Builder (copyByteString)
  3. import Control.Concurrent (runInUnboundThread)
  4. import Data.Aeson ((.=), object, encode)
  5. import qualified Data.ByteString.Lazy as L
  6. import Data.Text (Text)
  7. import Network.HTTP.Types (status200)
  8. import Network.Wai (responseBuilder)
  9. import qualified Network.Wai.Handler.Warp as W
  10. main :: IO ()
  11. main =
  12. runInUnboundThread $ W.runSettings settings app
  13. where
  14. settings = W.setPort 8000
  15. $ W.setOnException (\_ _ -> return ()) W.defaultSettings
  16. app _ respond = respond response
  17. !response = responseBuilder status200 ct json
  18. ct = [("Content-Type", "application/json")]
  19. !json = copyByteString
  20. $ L.toStrict
  21. $ encode
  22. $ object ["message" .= ("Hello, World!" :: Text)]