{-# 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