@@ -2,8 +2,10 @@
2{-# LANGUAGE RecordWildCards #-}
2{-# LANGUAGE RecordWildCards #-}
3module Servant.Server.Internal.ServantErr where
3module Servant.Server.Internal.ServantErr where
5+import Control.Exception (Exception)
5import qualified Data.ByteString.Char8 as BS
6import qualified Data.ByteString.Char8 as BS
6import qualified Data.ByteString.Lazy as LBS
7import qualified Data.ByteString.Lazy as LBS
8+import Data.Typeable (Typeable)
7import qualified Network.HTTP.Types as HTTP
9import qualified Network.HTTP.Types as HTTP
8import Network.Wai (Response, responseLBS)
10import Network.Wai (Response, responseLBS)
@@ -11,7 +13,10 @@ data ServantErr = ServantErr { errHTTPCode :: Int
11 , errReasonPhrase :: String
13 , errReasonPhrase :: String
12 , errBody :: LBS.ByteString
14 , errBody :: LBS.ByteString
13 , errHeaders :: [HTTP.Header]
15 , errHeaders :: [HTTP.Header]
14− } deriving (Show, Eq, Read)
16+ } deriving (Show, Eq, Read, Typeable)
18+-- Make ServantErr throwable:
19+instance Exception ServantErr
16responseServantErr :: ServantErr -> Response
21responseServantErr :: ServantErr -> Response
17responseServantErr ServantErr{..} = responseLBS status errHeaders errBody
22responseServantErr ServantErr{..} = responseLBS status errHeaders errBody