{-# LANGUAGE DeriveAnyClass #-}

module TDLib.Errors where

import Control.Exception
import Data.Aeson
import Data.ByteString (ByteString)

data TDLibError
  = -- | Recieved an answer but the field "@extra" is not present or is not a integer
    ExtraFieldNotInt !Value
  | -- | The json value cannot be parsed into the expected data type
    UnableToParseJSON !ByteString
  | -- | The bytestring failed to be parsed into a 'Value'
    UnableToParseValue !Value
  | -- | Unknown Error
    UnknownError
  deriving (Int -> TDLibError -> ShowS
[TDLibError] -> ShowS
TDLibError -> String
(Int -> TDLibError -> ShowS)
-> (TDLibError -> String)
-> ([TDLibError] -> ShowS)
-> Show TDLibError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TDLibError] -> ShowS
$cshowList :: [TDLibError] -> ShowS
show :: TDLibError -> String
$cshow :: TDLibError -> String
showsPrec :: Int -> TDLibError -> ShowS
$cshowsPrec :: Int -> TDLibError -> ShowS
Show, TDLibError -> TDLibError -> Bool
(TDLibError -> TDLibError -> Bool)
-> (TDLibError -> TDLibError -> Bool) -> Eq TDLibError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TDLibError -> TDLibError -> Bool
$c/= :: TDLibError -> TDLibError -> Bool
== :: TDLibError -> TDLibError -> Bool
$c== :: TDLibError -> TDLibError -> Bool
Eq, Show TDLibError
Typeable TDLibError
(Typeable TDLibError, Show TDLibError) =>
(TDLibError -> SomeException)
-> (SomeException -> Maybe TDLibError)
-> (TDLibError -> String)
-> Exception TDLibError
SomeException -> Maybe TDLibError
TDLibError -> String
TDLibError -> SomeException
forall e.
(Typeable e, Show e) =>
(e -> SomeException)
-> (SomeException -> Maybe e) -> (e -> String) -> Exception e
displayException :: TDLibError -> String
$cdisplayException :: TDLibError -> String
fromException :: SomeException -> Maybe TDLibError
$cfromException :: SomeException -> Maybe TDLibError
toException :: TDLibError -> SomeException
$ctoException :: TDLibError -> SomeException
$cp2Exception :: Show TDLibError
$cp1Exception :: Typeable TDLibError
Exception)