@@ -6,6 +6,8 @@
66module Network.Wai.Handler.Warp.Response (
77 sendResponse
88 , fileRange -- for testing
9+ , warpVersion
10+ , defaultServerValue
911 ) where
1012
1113import Blaze.ByteString.Builder (fromByteString, Builder, toByteStringIO, flush)
@@ -22,6 +24,7 @@ import Data.Conduit.Blaze (builderToByteString)
2224import qualified Data.Conduit.List as CL
2325import Data.Maybe (isJust, listToMaybe)
2426import Data.Monoid (mappend)
27+import Data.Version (showVersion)
2528import Network.HTTP.Attoparsec (parseByteRanges)
2629import qualified Network.HTTP.Types as H
2730import Network.Wai
@@ -31,6 +34,7 @@ import qualified Network.Wai.Handler.Warp.Timeout as T
3134import Network.Wai.Handler.Warp.Types
3235import Network.Wai.Internal
3336import Numeric (showInt)
37+import qualified Paths_warp
3438import qualified System.PosixCompat.Files as P
3539
3640----------------------------------------------------------------
@@ -306,6 +310,13 @@ addContentRange beg end total hdrs = (hContentRange, range) : hdrs
306310
307311----------------------------------------------------------------
308312
313+-- | The version of Warp.
314+warpVersion :: String
315+warpVersion = showVersion Paths_warp.version
316+
317+defaultServerValue :: HeaderValue
318+defaultServerValue = B.pack $ "Warp/" ++ warpVersion
319+
309320addServer :: IndexedHeader -> H.ResponseHeaders -> H.ResponseHeaders
310321addServer rspidxhdr hdrs = case rspidxhdr ! idxServer of
311322 Nothing -> (hServer, defaultServerValue) : hdrs