grapesy-1.0.0: src/Network/GRPC/Common/Protobuf/Any.hs
-- | Support for the protobuf @Any@ type
--
-- Official docs at <https://protobuf.dev/programming-guides/proto3/#any>.
--
-- Intended for qualified import.
--
-- > import Network.GRPC.Common.Protobuf.Any (Any)
-- > import Network.GRPC.Common.Protobuf.Any qualified as Any
module Network.GRPC.Common.Protobuf.Any (
Any
-- * Packing and unpacking
, UnpackError(..)
, pack
, unpack
) where
import Data.Bifunctor
import Data.ProtoLens.Any (Any, UnpackError(..))
import Data.ProtoLens.Any qualified as Any
import Data.ProtoLens.Message (Message)
import Network.GRPC.Spec
{-------------------------------------------------------------------------------
Pack and unpack
-------------------------------------------------------------------------------}
pack :: Message a => Proto a -> Proto Any
pack = Proto . Any.pack . getProto
unpack :: Message a => Proto Any -> Either UnpackError (Proto a)
unpack = second Proto . Any.unpack . getProto