]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/DefaultPage.hs
Merge branch 'convertible'
[Lucu.git] / Network / HTTP / Lucu / DefaultPage.hs
index e106774fafe6777faf7a066d7188f77df1e4a974..c5ae6f5c5d485ea8dbe4ca6046e70cbd7258ce47 100644 (file)
@@ -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 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
          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 #-}