{-# LANGUAGE OverloadedStrings #-}


module Web.Routes.Nested.FileExtListener.Blaze where

import           Web.Routes.Nested.FileExtListener.Types

import           Data.Map
import qualified Data.Text.Lazy.Encoding                 as LT
import           Network.HTTP.Types                      (RequestHeaders,
                                                          Status, status200)
import           Network.Wai
import qualified Text.Blaze.Html                         as H
import qualified Text.Blaze.Html.Renderer.Text           as H

import           Control.Monad.Writer



blaze :: Monad m => H.Html -> FileExtListenerT Response m ()
blaze i =
  let r = responseLBS status200 [("Content-Type", "text/html")] $
            LT.encodeUtf8 $ H.renderHtml i in
  FileExtListenerT $ tell $
    FileExts $ singleton Html r

blazeHeaders :: Monad m => RequestHeaders -> H.Html -> FileExtListenerT Response m ()
blazeHeaders hs i =
  let r = responseLBS status200 hs $
            LT.encodeUtf8 $ H.renderHtml i in
  FileExtListenerT $ tell $
    FileExts $ singleton Html r

blazeStatus :: Monad m => Status -> H.Html -> FileExtListenerT Response m ()
blazeStatus s i =
  let r = responseLBS s [("Content-Type", "text/html")] $
            LT.encodeUtf8 $ H.renderHtml i in
  FileExtListenerT $ tell $
    FileExts $ singleton Html r

blazeStatusHeaders :: Monad m => Status -> RequestHeaders -> H.Html -> FileExtListenerT Response m ()
blazeStatusHeaders s hs i =
  let r = responseLBS s hs $
            LT.encodeUtf8 $ H.renderHtml i in
  FileExtListenerT $ tell $
    FileExts $ singleton Html r



blazeOnly :: H.Html -> Response
blazeOnly i =
  responseLBS status200 [("Content-Type", "text/html")] $ LT.encodeUtf8 $ H.renderHtml i

blazeOnlyHeaders :: RequestHeaders -> H.Html -> Response
blazeOnlyHeaders hs i =
  responseLBS status200 hs $ LT.encodeUtf8 $ H.renderHtml i

blazeOnlyStatus :: Status -> H.Html -> Response
blazeOnlyStatus s i =
  responseLBS s [("Content-Type", "text/html")] $ LT.encodeUtf8 $ H.renderHtml i

blazeOnlyStatusHeaders :: Status -> RequestHeaders -> H.Html -> Response
blazeOnlyStatusHeaders s hs i =
  responseLBS s hs $ LT.encodeUtf8 $ H.renderHtml i