-- | -- Smith API errors, these represent application, authn/authz and network -- errors that can occur when making actual requests to the Smith API. -- module Smith.Client.Error ( SmithError (..) , ErrorCode (..) , ErrorMessage (..) ) where import Data.Text (Text) import qualified Data.ByteString.Lazy as Lazy import qualified Network.OAuth2.JWT.Client as OAuth2 -- FIX Better division of errors, see module description for ideas... data SmithError = SmithApplicationError ErrorCode (Maybe ErrorMessage) | SmithAuthorizationError ErrorCode (Maybe ErrorMessage) | SmithAuthenticationError OAuth2.GrantError | SmithResponseParseError Int Lazy.ByteString Text | SmithStatusCodeError Int Lazy.ByteString | SmithUrlParseError Text deriving (Eq, Show) newtype ErrorCode = ErrorCode { getErrorCode :: Text } deriving (Eq, Ord, Show) newtype ErrorMessage = ErrorMessage { getErrorMessage :: Text } deriving (Eq, Ord, Show)