packages feed

neptune-backend-0.1.2: lib/Neptune/Utils.hs

{-|
Module      : Neptune.Utils
Description : Neptune Client
Copyright   : (c) Jiasen Wu, 2020
License     : BSD-3-Clause
-}
module Neptune.Utils where

import qualified Data.ByteString.Lazy.Char8 as BSL
import qualified Network.HTTP.Client        as NH
import           RIO

import           Neptune.Backend.Client

-- | Unwrap the 'MimeResult a'. Raise an error if it indicates a failure.
handleMimeError :: (Monad m, HasCallStack) => MimeResult a -> m a
handleMimeError result =
    case mimeResult result of
      Left e -> let err_msg = mimeError e
                    response = NH.responseBody $ mimeErrorResponse e
                in error (err_msg ++ " " ++ BSL.unpack response)
      Right r -> return r