X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FDefaultPage.hs;fp=Network%2FHTTP%2FLucu%2FDefaultPage.hs;h=c5ae6f5c5d485ea8dbe4ca6046e70cbd7258ce47;hp=e106774fafe6777faf7a066d7188f77df1e4a974;hb=5f2ef377345fc47aabc63c1325df82c1cd9da9ed;hpb=313924e79d4ed48d3efb9f2530a48305fdd68c4b diff --git a/Network/HTTP/Lucu/DefaultPage.hs b/Network/HTTP/Lucu/DefaultPage.hs index e106774..c5ae6f5 100644 --- a/Network/HTTP/Lucu/DefaultPage.hs +++ b/Network/HTTP/Lucu/DefaultPage.hs @@ -1,6 +1,7 @@ {-# LANGUAGE OverloadedStrings , RecordWildCards + , ScopedTypeVariables , TypeOperators , UnicodeSyntax #-} @@ -12,8 +13,9 @@ module Network.HTTP.Lucu.DefaultPage where import Blaze.ByteString.Builder (Builder) import Data.Ascii (Ascii) -import qualified Data.Ascii as A import qualified Data.CaseInsensitive as CI +import Data.Convertible.Base +import Data.Convertible.Utils import Data.Maybe import Data.Monoid.Unicode import Data.Text (Text) @@ -38,21 +40,24 @@ defaultPageForResponse ∷ Config → Maybe Request → Response → Builder defaultPageForResponse conf req res = defaultPageWithMessage conf (resStatus res) $ defaultMessage req res -defaultPageWithMessage ∷ StatusCode sc ⇒ Config → sc → Html → Builder +defaultPageWithMessage ∷ ∀sc. StatusCode sc ⇒ Config → sc → Html → Builder {-# INLINEABLE defaultPageWithMessage #-} defaultPageWithMessage (Config {..}) sc msg = renderHtmlBuilder $ do unsafeByteString "" docType html ! xmlns "http://www.w3.org/1999/xhtml" $ - do let status = toHtml ∘ A.toText ∘ A.fromAsciiBuilder $ printStatusCode sc + do let status = toHtml $ scText sc head $ title status body $ do h1 status p msg hr - address $ do toHtml $ A.toText cnfServerSoftware + address $ do toHtml (cs cnfServerSoftware ∷ Text) unsafeByteString " at " toHtml $ CI.original cnfServerHost + where + scText ∷ sc → Text + scText = convertSuccessVia ((⊥) ∷ Ascii) ∘ fromStatusCode defaultMessage ∷ Maybe Request → Response → Html {-# INLINEABLE defaultMessage #-} @@ -123,7 +128,7 @@ defaultMessage req res@(Response {..}) path = toHtml ∘ uriPath ∘ reqURI $ fromJust req loc ∷ Text - loc = A.toText ∘ fromJust $ getHeader "Location" res + loc = cs ∘ fromJust $ getHeader "Location" res hr ∷ Html {-# INLINE hr #-}