@@ -2,8 +2,10 @@
22{-# LANGUAGE RecordWildCards #-}
33module Servant.Server.Internal.ServantErr where
44
5+import Control.Exception (Exception)
56import qualified Data.ByteString.Char8 as BS
67import qualified Data.ByteString.Lazy as LBS
8+import Data.Typeable (Typeable)
79import qualified Network.HTTP.Types as HTTP
810import Network.Wai (Response, responseLBS)
911
@@ -11,7 +13,10 @@ data ServantErr = ServantErr { errHTTPCode :: Int
1113 , errReasonPhrase :: String
1214 , errBody :: LBS.ByteString
1315 , errHeaders :: [HTTP.Header]
14− } deriving (Show, Eq, Read)
16+ } deriving (Show, Eq, Read, Typeable)
17+
18+-- Make ServantErr throwable:
19+instance Exception ServantErr
1520
1621responseServantErr :: ServantErr -> Response
1722responseServantErr ServantErr{..} = responseLBS status errHeaders errBody