, mkDefaultPage
)
where
+import qualified Blaze.ByteString.Builder.Char.Utf8 as BB
import Control.Arrow
import Control.Arrow.ArrowList
import Control.Arrow.ListArrow
import Control.Monad
import qualified Data.Ascii as A
import Data.Maybe
-import qualified Data.Sequence as S
-import Data.Text (Text)
import qualified Data.Text as T
-import Data.Text.Encoding
+import qualified Data.Text.Lazy as Lazy
import Network.HTTP.Lucu.Config
import Network.HTTP.Lucu.Headers
import Network.HTTP.Lucu.Interaction
import Text.XML.HXT.Arrow.XmlState
import Text.XML.HXT.DOM.TypeDefs
-getDefaultPage ∷ Config → Maybe Request → Response → Text
+getDefaultPage ∷ Config → Maybe Request → Response → Lazy.Text
{-# INLINEABLE getDefaultPage #-}
getDefaultPage !conf !req !res
= let msgA = getMsg req res
writeDocumentToString [ withIndent True ]
) ()
in
- T.pack xmlStr
+ Lazy.pack xmlStr
writeDefaultPage ∷ Interaction → STM ()
writeDefaultPage !itr
-- Content-Type が正しくなければ補完できない。
- = do res ← readItr itrResponse id itr
+ = do res ← readItr itrResponse itr
when (getHeader "Content-Type" res == Just defaultPageContentType)
- $ do reqM ← readItr itrRequest id itr
+ $ do reqM ← readItr itrRequest itr
let conf = itrConfig itr
page = getDefaultPage conf reqM res
- writeTVar (itrBodyToSend itr)
- (S.singleton (encodeUtf8 page))
+ putTMVar (itrBodyToSend itr) (BB.fromLazyText page)
mkDefaultPage ∷ (ArrowXml a) ⇒ Config → StatusCode → a b XmlTree → a b XmlTree
{-# INLINEABLE mkDefaultPage #-}
mkDefaultPage !conf !status !msgA
- = let sStr = A.toString $ printStatusCode status
+ = let sStr = A.toString $ A.fromAsciiBuilder $ printStatusCode status
sig = concat [ A.toString (cnfServerSoftware conf)
, " at "
, T.unpack (cnfServerHost conf)