Respect accept header for JSON in devel server #719

This commit is contained in:
Michael Snoyman 2014-04-24 07:14:01 +03:00
parent f43c7fd3e4
commit 99831b52a2
2 changed files with 16 additions and 7 deletions

View File

@ -77,9 +77,10 @@ import Network.HTTP.ReverseProxy (ProxyDest (ProxyDest),
#if MIN_VERSION_http_reverse_proxy(0, 2, 0) #if MIN_VERSION_http_reverse_proxy(0, 2, 0)
import qualified Network.HTTP.ReverseProxy as ReverseProxy import qualified Network.HTTP.ReverseProxy as ReverseProxy
#endif #endif
import Network.HTTP.Types (status200) import Network.HTTP.Types (status200, status503)
import Network.Socket (sClose) import Network.Socket (sClose)
import Network.Wai (responseLBS) import Network.Wai (responseLBS, requestHeaders)
import Network.Wai.Parse (parseHttpAccept)
import Network.Wai.Handler.Warp (run) import Network.Wai.Handler.Warp (run)
import SrcLoc (Located) import SrcLoc (Located)
import Data.FileEmbed (embedFile) import Data.FileEmbed (embedFile)
@ -135,11 +136,18 @@ reverseProxy opts iappPort = do
manager <- newManager def manager <- newManager def
#endif #endif
let refreshHtml = LB.fromChunks $ return $(embedFile "refreshing.html") let refreshHtml = LB.fromChunks $ return $(embedFile "refreshing.html")
let onExc _ _ = return $ responseLBS status200 let onExc _ req
[ ("content-type", "text/html") | maybe False (("application/json" `elem`) . parseHttpAccept)
, ("Refresh", "1") (lookup "accept" $ requestHeaders req) =
] return $ responseLBS status503
refreshHtml [ ("Retry-After", "1")
]
"{\"message\":\"Recompiling\"}"
| otherwise = return $ responseLBS status200
[ ("content-type", "text/html")
, ("Refresh", "1")
]
refreshHtml
let runProxy = let runProxy =
run (develPort opts) $ waiProxyToSettings run (develPort opts) $ waiProxyToSettings

View File

@ -91,6 +91,7 @@ executable yesod
, transformers , transformers
, warp >= 1.3.7.5 , warp >= 1.3.7.5
, wai >= 1.4 , wai >= 1.4
, wai-extra
, data-default-class , data-default-class
, streaming-commons , streaming-commons