{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} module HaskellWorks.CabalCache.AppError ( AppError(..) , displayAppError , appErrorStatus ) where import Data.String import Data.Text (Text) import GHC.Generics import HaskellWorks.CabalCache.Show import qualified Data.Text as T import qualified Network.HTTP.Types as HTTP data AppError = AwsAppError { AppError -> Status status :: HTTP.Status } | HttpAppError { status :: HTTP.Status } | RetriesFailedAppError | NotFound | GenericAppError Text deriving (AppError -> AppError -> Bool (AppError -> AppError -> Bool) -> (AppError -> AppError -> Bool) -> Eq AppError forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: AppError -> AppError -> Bool $c/= :: AppError -> AppError -> Bool == :: AppError -> AppError -> Bool $c== :: AppError -> AppError -> Bool Eq, Int -> AppError -> ShowS [AppError] -> ShowS AppError -> String (Int -> AppError -> ShowS) -> (AppError -> String) -> ([AppError] -> ShowS) -> Show AppError forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [AppError] -> ShowS $cshowList :: [AppError] -> ShowS show :: AppError -> String $cshow :: AppError -> String showsPrec :: Int -> AppError -> ShowS $cshowsPrec :: Int -> AppError -> ShowS Show, (forall x. AppError -> Rep AppError x) -> (forall x. Rep AppError x -> AppError) -> Generic AppError forall x. Rep AppError x -> AppError forall x. AppError -> Rep AppError x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep AppError x -> AppError $cfrom :: forall x. AppError -> Rep AppError x Generic) instance IsString AppError where fromString :: String -> AppError fromString = Text -> AppError GenericAppError (Text -> AppError) -> (String -> Text) -> String -> AppError forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Text T.pack displayAppError :: AppError -> Text displayAppError :: AppError -> Text displayAppError (AwsAppError Status s) = Status -> Text forall a. Show a => a -> Text tshow Status s displayAppError (HttpAppError Status s) = Status -> Text forall a. Show a => a -> Text tshow Status s displayAppError AppError RetriesFailedAppError = Text "Multiple retries failed" displayAppError AppError NotFound = Text "Not found" displayAppError (GenericAppError Text msg) = Text msg appErrorStatus :: AppError -> Maybe Int appErrorStatus :: AppError -> Maybe Int appErrorStatus (AwsAppError (HTTP.Status Int statusCode ByteString _)) = Int -> Maybe Int forall a. a -> Maybe a Just Int statusCode appErrorStatus AppError _ = Maybe Int forall a. Maybe a Nothing