module Web.Routes.Nested.FileExtListener.Julius where
import Web.Routes.Nested.FileExtListener.Types
import Web.Routes.Nested.FileExtListener.ByteString
import Data.Map
import Text.Julius
import qualified Data.Text.Lazy as LT
import qualified Data.Text.Lazy.Encoding as LT
import Network.HTTP.Types (RequestHeaders,
Status, status200)
import Network.Wai
import Control.Monad.Writer
julius :: Monad m => Javascript -> FileExtListenerT Response m ()
julius = juliusStatusHeaders status200 [("Content-Type", "application/javascript")]
juliusStatus :: Monad m => Status -> Javascript -> FileExtListenerT Response m ()
juliusStatus s = juliusStatusHeaders s [("Content-Type", "application/javascript")]
juliusHeaders :: Monad m => RequestHeaders -> Javascript -> FileExtListenerT Response m ()
juliusHeaders = juliusStatusHeaders status200
juliusStatusHeaders :: Monad m => Status -> RequestHeaders -> Javascript -> FileExtListenerT Response m ()
juliusStatusHeaders s hs i =
let r = juliusOnlyStatusHeaders s hs i in
FileExtListenerT $ tell $
FileExts $ singleton JavaScript r
juliusOnly :: Javascript -> Response
juliusOnly = juliusOnlyStatusHeaders status200 [("Content-Type", "application/javascript")]
juliusOnlyStatus :: Status -> Javascript -> Response
juliusOnlyStatus s = juliusOnlyStatusHeaders s [("Content-Type", "application/javascript")]
juliusOnlyHeaders :: RequestHeaders -> Javascript -> Response
juliusOnlyHeaders = juliusOnlyStatusHeaders status200
juliusOnlyStatusHeaders :: Status -> RequestHeaders -> Javascript -> Response
juliusOnlyStatusHeaders s hs i = bytestringOnlyStatus s hs $ LT.encodeUtf8 $ renderJavascript i