hocker-1.0.0: src/Hocker/Types/Exceptions.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
-----------------------------------------------------------------------------
-- |
-- Module : Hocker.Types.Exceptions
-- Copyright : (C) 2016 Awake Networks
-- License : Apache-2.0
-- Maintainer : Awake Networks <opensource@awakenetworks.com>
-- Stability : stable
----------------------------------------------------------------------------
module Hocker.Types.Exceptions where
import Control.DeepSeq
import Control.Exception
import Data.Monoid
import GHC.Generics
data HockerException = HockerException
{ baseMsg :: String
, expected :: Maybe String
, received :: Maybe String
} deriving (Read, Generic, NFData)
instance Exception HockerException
instance Show HockerException where
show (HockerException m e r) = m <> (ext $ e <> r)
where
ext (Just v) = "; " <> v
ext Nothing = mempty
hockerException :: String -> HockerException
hockerException m = HockerException m Nothing Nothing