module Belka.TransportError where import Belka.Prelude import qualified Network.HTTP.Client as A data TransportError = TimeoutTransportError | ConnectionTransportError IOErrorType | UnclassifiedTransportError A.HttpException deriving (Show) someException :: TransportError -> SomeException -> TransportError someException alternative someException = case fromException someException of Just ioException -> ConnectionTransportError (ioeGetErrorType ioException) Nothing -> alternative httpException :: A.HttpException -> TransportError httpException httpException = case httpException of A.HttpExceptionRequest _ content -> case content of A.ResponseTimeout -> TimeoutTransportError A.ConnectionTimeout -> TimeoutTransportError A.ConnectionFailure x -> someException (UnclassifiedTransportError httpException) x A.InternalException x -> someException (UnclassifiedTransportError httpException) x _ -> UnclassifiedTransportError httpException _ -> UnclassifiedTransportError httpException