module Hack2.Contrib.Middleware.UTF8Body (utf8_body) where

import Prelude ()
import Air.Env
import Air.Extra (u2b)
import Air.Heavy (unescape_xml)
import Hack2
import qualified Data.ByteString.Char8 as B
import Hack2.Contrib.Utils (as_string)
import Data.Maybe (fromMaybe)

utf8_body :: Middleware
utf8_body app = \env -> do
  r <- app env
  let raw_body = r.body
  return r {body = raw_body.as_string (unescape_xml > fromMaybe def > u2b)}