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