{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Servant.Server.Internal.ServerError where
import Control.Exception
(Exception)
import qualified Data.ByteString.Char8 as BS
import qualified Data.ByteString.Lazy as LBS
import Data.Typeable
(Typeable)
import qualified Network.HTTP.Types as HTTP
import Network.Wai
(Response, responseLBS)
data ServerError = ServerError
{ ServerError -> Int
errHTTPCode :: Int
, ServerError -> String
errReasonPhrase :: String
, ServerError -> ByteString
errBody :: LBS.ByteString
, :: [HTTP.Header]
}
deriving (Int -> ServerError -> ShowS
[ServerError] -> ShowS
ServerError -> String
(Int -> ServerError -> ShowS)
-> (ServerError -> String)
-> ([ServerError] -> ShowS)
-> Show ServerError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ServerError] -> ShowS
$cshowList :: [ServerError] -> ShowS
show :: ServerError -> String
$cshow :: ServerError -> String
showsPrec :: Int -> ServerError -> ShowS
$cshowsPrec :: Int -> ServerError -> ShowS
Show, ServerError -> ServerError -> Bool
(ServerError -> ServerError -> Bool)
-> (ServerError -> ServerError -> Bool) -> Eq ServerError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ServerError -> ServerError -> Bool
$c/= :: ServerError -> ServerError -> Bool
== :: ServerError -> ServerError -> Bool
$c== :: ServerError -> ServerError -> Bool
Eq, ReadPrec [ServerError]
ReadPrec ServerError
Int -> ReadS ServerError
ReadS [ServerError]
(Int -> ReadS ServerError)
-> ReadS [ServerError]
-> ReadPrec ServerError
-> ReadPrec [ServerError]
-> Read ServerError
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ServerError]
$creadListPrec :: ReadPrec [ServerError]
readPrec :: ReadPrec ServerError
$creadPrec :: ReadPrec ServerError
readList :: ReadS [ServerError]
$creadList :: ReadS [ServerError]
readsPrec :: Int -> ReadS ServerError
$creadsPrec :: Int -> ReadS ServerError
Read, Typeable)
instance Exception ServerError
responseServerError :: ServerError -> Response
responseServerError :: ServerError -> Response
responseServerError ServerError{..} = Status -> [Header] -> ByteString -> Response
responseLBS Status
status [Header]
errHeaders ByteString
errBody
where
status :: Status
status = Int -> ByteString -> Status
HTTP.mkStatus Int
errHTTPCode (String -> ByteString
BS.pack String
errReasonPhrase)
err300 :: ServerError
err300 :: ServerError
err300 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 300
, errReasonPhrase :: String
errReasonPhrase = "Multiple Choices"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err301 :: ServerError
err301 :: ServerError
err301 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 301
, errReasonPhrase :: String
errReasonPhrase = "Moved Permanently"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err302 :: ServerError
err302 :: ServerError
err302 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 302
, errReasonPhrase :: String
errReasonPhrase = "Found"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err303 :: ServerError
err303 :: ServerError
err303 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 303
, errReasonPhrase :: String
errReasonPhrase = "See Other"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err304 :: ServerError
err304 :: ServerError
err304 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 304
, errReasonPhrase :: String
errReasonPhrase = "Not Modified"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err305 :: ServerError
err305 :: ServerError
err305 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 305
, errReasonPhrase :: String
errReasonPhrase = "Use Proxy"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err307 :: ServerError
err307 :: ServerError
err307 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 307
, errReasonPhrase :: String
errReasonPhrase = "Temporary Redirect"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err400 :: ServerError
err400 :: ServerError
err400 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 400
, errReasonPhrase :: String
errReasonPhrase = "Bad Request"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err401 :: ServerError
err401 :: ServerError
err401 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 401
, errReasonPhrase :: String
errReasonPhrase = "Unauthorized"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err402 :: ServerError
err402 :: ServerError
err402 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 402
, errReasonPhrase :: String
errReasonPhrase = "Payment Required"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err403 :: ServerError
err403 :: ServerError
err403 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 403
, errReasonPhrase :: String
errReasonPhrase = "Forbidden"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err404 :: ServerError
err404 :: ServerError
err404 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 404
, errReasonPhrase :: String
errReasonPhrase = "Not Found"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err405 :: ServerError
err405 :: ServerError
err405 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 405
, errReasonPhrase :: String
errReasonPhrase = "Method Not Allowed"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err406 :: ServerError
err406 :: ServerError
err406 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 406
, errReasonPhrase :: String
errReasonPhrase = "Not Acceptable"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err407 :: ServerError
err407 :: ServerError
err407 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 407
, errReasonPhrase :: String
errReasonPhrase = "Proxy Authentication Required"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err409 :: ServerError
err409 :: ServerError
err409 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 409
, errReasonPhrase :: String
errReasonPhrase = "Conflict"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err410 :: ServerError
err410 :: ServerError
err410 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 410
, errReasonPhrase :: String
errReasonPhrase = "Gone"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err411 :: ServerError
err411 :: ServerError
err411 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 411
, errReasonPhrase :: String
errReasonPhrase = "Length Required"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err412 :: ServerError
err412 :: ServerError
err412 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 412
, errReasonPhrase :: String
errReasonPhrase = "Precondition Failed"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err413 :: ServerError
err413 :: ServerError
err413 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 413
, errReasonPhrase :: String
errReasonPhrase = "Request Entity Too Large"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err414 :: ServerError
err414 :: ServerError
err414 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 414
, errReasonPhrase :: String
errReasonPhrase = "Request-URI Too Large"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err415 :: ServerError
err415 :: ServerError
err415 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 415
, errReasonPhrase :: String
errReasonPhrase = "Unsupported Media Type"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err416 :: ServerError
err416 :: ServerError
err416 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 416
, errReasonPhrase :: String
errReasonPhrase = "Request range not satisfiable"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err417 :: ServerError
err417 :: ServerError
err417 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 417
, errReasonPhrase :: String
errReasonPhrase = "Expectation Failed"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err418 :: ServerError
err418 :: ServerError
err418 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 418
, errReasonPhrase :: String
errReasonPhrase = "I'm a teapot"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err422 :: ServerError
err422 :: ServerError
err422 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 422
, errReasonPhrase :: String
errReasonPhrase = "Unprocessable Entity"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err500 :: ServerError
err500 :: ServerError
err500 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 500
, errReasonPhrase :: String
errReasonPhrase = "Internal Server Error"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err501 :: ServerError
err501 :: ServerError
err501 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 501
, errReasonPhrase :: String
errReasonPhrase = "Not Implemented"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err502 :: ServerError
err502 :: ServerError
err502 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 502
, errReasonPhrase :: String
errReasonPhrase = "Bad Gateway"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err503 :: ServerError
err503 :: ServerError
err503 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 503
, errReasonPhrase :: String
errReasonPhrase = "Service Unavailable"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err504 :: ServerError
err504 :: ServerError
err504 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 504
, errReasonPhrase :: String
errReasonPhrase = "Gateway Time-out"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}
err505 :: ServerError
err505 :: ServerError
err505 = ServerError :: Int -> String -> ByteString -> [Header] -> ServerError
ServerError { errHTTPCode :: Int
errHTTPCode = 505
, errReasonPhrase :: String
errReasonPhrase = "HTTP Version not supported"
, errBody :: ByteString
errBody = ""
, errHeaders :: [Header]
errHeaders = []
}