module Network.HTTP.Toolkit.Error where
import Data.Typeable
import Control.Monad (guard)
import Control.Exception
import Data.ByteString (ByteString)
data ToolkitError =
UnexpectedEndOfInput
| InvalidRequestLine ByteString
| InvalidStatusLine ByteString
| InvalidHeader
| HeaderTooLarge
| ChunkTooLarge
| InvalidChunk
deriving (Eq, Show, Typeable)
instance Exception ToolkitError
catchOnly :: (Eq e, Exception e) => IO a -> e -> IO a -> IO a
(action `catchOnly` e) handler = catchJust (guard . (== e)) action $ \() -> handler