]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/Resource/Internal.hs
Headers is now instances of collections-api's type classes.
[Lucu.git] / Network / HTTP / Lucu / Resource / Internal.hs
index e34512dd449614562ec9783d362a62182284aa95..b5fad5952f8463b16adbdcf27e98a91cbcfed909 100644 (file)
@@ -36,13 +36,15 @@ import Control.Applicative
 import Control.Concurrent
 import Control.Concurrent.STM
 import Control.Exception
+import Control.Monad hiding (mapM_)
 import Control.Monad.IO.Class
-import Control.Monad.Reader
+import Control.Monad.Reader (ReaderT, runReaderT, ask)
 import Control.Monad.Unicode
 import Data.Ascii (Ascii, CIAscii)
 import qualified Data.Ascii as A
 import qualified Data.ByteString as Strict
-import Data.List
+import Data.Collections
+import Data.List (intersperse, nub)
 import Data.Maybe
 import Data.Monoid
 import Data.Monoid.Unicode
@@ -60,7 +62,7 @@ import Network.Socket
 #if defined(HAVE_SSL)
 import OpenSSL.X509
 #endif
-import Prelude hiding (catch)
+import Prelude hiding (catch, concat, mapM_, tail)
 import Prelude.Unicode
 import System.IO
 
@@ -207,7 +209,7 @@ spawnResource (ResourceDef {..}) ni@(NI {..})
                    -- in the response. Hooray!
                    flip runResource ni $
                        do setStatus $ aboStatus abo
-                          mapM_ (uncurry setHeader) $ H.fromHeaders $ aboHeaders abo
+                          mapM_ (uncurry setHeader) (aboHeaders abo)
                           setHeader "Content-Type" defaultPageContentType
                           deleteHeader "Content-Encoding"
                           putBuilder $ abortPage niConfig (Just niRequest) res abo
@@ -318,7 +320,8 @@ setStatus sc
                 $ do state ← readTVar $ niState ni
                      when (state > DecidingHeader)
                          $ fail "Too late to declare the response status."
-                     setResponseStatus ni sc
+                     res ← readTVar $ niResponse ni
+                     writeTVar (niResponse ni) $ setStatusCode sc res
 
 -- |@'setHeader' name value@ declares the value of the response header
 -- @name@ as @value@. Note that this function is not intended to be