hw-uri-0.2.0.0: src/HaskellWorks/Data/Uri/UriError.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module HaskellWorks.Data.Uri.UriError
( UriError(..)
, displayUriError
, uriErrorStatus
) where
import Control.DeepSeq
import Data.Semigroup ((<>))
import Data.String
import Data.Text (Text)
import GHC.Generics
import HaskellWorks.Data.Uri.Show
import HaskellWorks.Data.Uri.Status
import qualified Data.Text as T
data UriError
= AwsUriError
{ status :: Status
}
| HttpUriError
{ status :: Status
}
| RetriesFailedUriError
| NotFound
| DeleteFailed Text
| GenericUriError Text
deriving (Eq, Show, Generic, NFData)
instance IsString UriError where
fromString = GenericUriError . T.pack
displayUriError :: UriError -> Text
displayUriError (AwsUriError s) = tshow s
displayUriError (HttpUriError s) = tshow s
displayUriError RetriesFailedUriError = "Multiple retries failed"
displayUriError NotFound = "Not found"
displayUriError (GenericUriError msg) = msg
displayUriError (DeleteFailed msg) = "Delete failed: " <> msg
uriErrorStatus :: UriError -> Maybe Int
uriErrorStatus (AwsUriError (Status statusCode _)) = Just statusCode
uriErrorStatus _ = Nothing