module Network.Wai.Middleware.ContentType.Julius where
import Network.Wai.Middleware.ContentType.Types
import qualified Network.Wai.Middleware.ContentType.Types as CT
import Network.Wai.Middleware.ContentType.Builder
import Network.HTTP.Types (RequestHeaders, Status, status200)
import Network.Wai.Trans
import Text.Julius
import qualified Data.Text.Lazy.Encoding as LT
import Control.Monad.IO.Class (MonadIO)
julius :: MonadIO m =>
Javascript -> FileExtListenerT (MiddlewareT m) m ()
julius = juliusStatusHeaders status200 [("Content-Type", "application/javascript")]
juliusWith :: MonadIO m =>
(Response -> Response) -> Javascript
-> FileExtListenerT (MiddlewareT m) m ()
juliusWith f = juliusStatusHeadersWith f status200 [("Content-Type", "application/javascript")]
juliusStatus :: MonadIO m =>
Status -> Javascript
-> FileExtListenerT (MiddlewareT m) m ()
juliusStatus s = juliusStatusHeaders s [("Content-Type", "application/javascript")]
juliusStatusWith :: MonadIO m =>
(Response -> Response) -> Status -> Javascript
-> FileExtListenerT (MiddlewareT m) m ()
juliusStatusWith f s = juliusStatusHeadersWith f s [("Content-Type", "application/javascript")]
juliusHeaders :: MonadIO m =>
RequestHeaders -> Javascript
-> FileExtListenerT (MiddlewareT m) m ()
juliusHeaders = juliusStatusHeaders status200
juliusHeadersWith :: MonadIO m =>
(Response -> Response) -> RequestHeaders -> Javascript
-> FileExtListenerT (MiddlewareT m) m ()
juliusHeadersWith f = juliusStatusHeadersWith f status200
juliusStatusHeaders :: MonadIO m =>
Status -> RequestHeaders -> Javascript
-> FileExtListenerT (MiddlewareT m) m ()
juliusStatusHeaders = juliusStatusHeadersWith id
juliusStatusHeadersWith :: MonadIO m =>
(Response -> Response) -> Status -> RequestHeaders -> Javascript
-> FileExtListenerT (MiddlewareT m) m ()
juliusStatusHeadersWith f s hs =
builderStatusWith f CT.JavaScript s hs . LT.encodeUtf8Builder . renderJavascript
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 = builderOnlyStatus s hs . LT.encodeUtf8Builder . renderJavascript