|
@@ -1,20 +1,24 @@
|
|
{-# LANGUAGE OverloadedStrings, BangPatterns #-}
|
|
{-# LANGUAGE OverloadedStrings, BangPatterns #-}
|
|
|
|
|
|
|
|
+import Blaze.ByteString.Builder (copyByteString)
|
|
import Control.Concurrent (runInUnboundThread)
|
|
import Control.Concurrent (runInUnboundThread)
|
|
import Data.Aeson ((.=), object, encode)
|
|
import Data.Aeson ((.=), object, encode)
|
|
-import Data.Streaming.Network (bindPortTCP)
|
|
|
|
|
|
+import qualified Data.ByteString.Lazy as L
|
|
import Data.Text (Text)
|
|
import Data.Text (Text)
|
|
import Network.HTTP.Types (status200)
|
|
import Network.HTTP.Types (status200)
|
|
-import Network.Wai (responseLBS)
|
|
|
|
|
|
+import Network.Wai (responseBuilder)
|
|
import qualified Network.Wai.Handler.Warp as W
|
|
import qualified Network.Wai.Handler.Warp as W
|
|
|
|
|
|
main :: IO ()
|
|
main :: IO ()
|
|
-main = runInUnboundThread $ do
|
|
|
|
- s <- bindPortTCP 8000 "*"
|
|
|
|
- W.runSettingsSocket settings s app
|
|
|
|
|
|
+main =
|
|
|
|
+ runInUnboundThread $ W.runSettings settings app
|
|
where
|
|
where
|
|
- settings = W.setOnException (\_ _ -> return ()) W.defaultSettings
|
|
|
|
|
|
+ settings = W.setPort 8000
|
|
|
|
+ $ W.setOnException (\_ _ -> return ()) W.defaultSettings
|
|
app _ respond = respond response
|
|
app _ respond = respond response
|
|
- !response = responseLBS status200 ct json
|
|
|
|
|
|
+ !response = responseBuilder status200 ct json
|
|
ct = [("Content-Type", "application/json")]
|
|
ct = [("Content-Type", "application/json")]
|
|
- !json = encode $ object ["message" .= ("Hello, World!" :: Text)]
|
|
|
|
|
|
+ !json = copyByteString
|
|
|
|
+ $ L.toStrict
|
|
|
|
+ $ encode
|
|
|
|
+ $ object ["message" .= ("Hello, World!" :: Text)]
|