module Belka.ParseBody where import Belka.Prelude import qualified Belka.ParseHeaders as E import qualified Belka.Potoki.Consume as H import qualified Potoki.Consume as F import qualified Aeson.ValueParser as G import qualified Data.Aeson as I newtype ParseBody a = ParseBody (Compose (F.Consume ByteString) (Either Text) a) deriving (Functor, Applicative) consume :: F.Consume ByteString (Either Text body) -> ParseBody body consume consume = ParseBody (Compose consume) json :: ParseBody I.Value json = consume (H.json) parseJson :: G.Value json -> ParseBody json parseJson jsonParser = consume (H.parseJson jsonParser) {-| Useful for debugging -} print :: ParseBody () print = consume (fmap Right F.printBytes)