msgpack-types-0.2.0: src/Data/MessagePack/Types.hs
{-# LANGUAGE Trustworthy #-}
module Data.MessagePack.Types
( Assoc (..)
, Object (..)
, MessagePack (..)
, Config, defaultConfig
, DecodeError, decodeError, errorMessages
, fromObject
) where
import Control.Monad.Validate (runValidate)
import Data.MessagePack.Types.Assoc (Assoc (..))
import Data.MessagePack.Types.Class (Config, MessagePack (..),
defaultConfig)
import Data.MessagePack.Types.DecodeError (DecodeError, decodeError,
errorMessages)
import Data.MessagePack.Types.Generic ()
import Data.MessagePack.Types.Object (Object (..))
-- | Similar to 'fromObjectWith' 'defaultConfig' but returns the result in
-- a 'MonadFail'.
--
-- Useful when running in another 'MonadFail' like 'Maybe'.
fromObject :: (MonadFail m, MessagePack a) => Object -> m a
fromObject obj =
case runValidate (fromObjectWith defaultConfig obj) of
Left err -> fail $ show err
Right ok -> return ok