( Interaction(..)
, InteractionState(..)
, InteractionQueue
- , newInteractionQueue -- IO InteractionQueue
- , newInteraction -- Config -> HostName -> Maybe Request -> IO Interaction
-
- , writeItr -- Interaction -> (Interaction -> TVar a) -> a -> STM ()
- , readItr -- Interaction -> (Interaction -> TVar a) -> (a -> b) -> STM b
- , readItrF -- (Functor f) => Interaction -> (Interaction -> TVar (f a)) -> (a -> b) -> STM (f b)
- , updateItr -- Interaction -> (Interaction -> TVar a) -> (a -> a) -> STM ()
- , updateItrF -- (Functor f) => Interaction -> (Interaction -> TVar (f a)) -> (a -> a) -> STM ()
+ , newInteractionQueue
+ , newInteraction
+ , defaultPageContentType
+
+ , writeItr
+ , readItr
+ , readItrF
+ , updateItr
+ , updateItrF
)
where
import Data.Sequence (Seq)
import Network
import Network.HTTP.Lucu.Config
+import Network.HTTP.Lucu.HttpVersion
import Network.HTTP.Lucu.Request
import Network.HTTP.Lucu.Response
, itrRemoteHost :: HostName
, itrResourcePath :: Maybe [String]
, itrRequest :: Maybe Request
- , itrResponse :: TVar (Maybe Response)
+ , itrResponse :: TVar Response
-- FIXME: この三つは本來 TVar であるべきでないので、唯の Bool にす
-- るに越した事は無いが、それは重要でない。そんな golf で自分の貴重
newInteractionQueue = newTVarIO S.empty
+defaultPageContentType :: String
+defaultPageContentType = "application/xhtml+xml"
+
+
newInteraction :: Config -> HostName -> Maybe Request -> IO Interaction
newInteraction conf host req
- = do responce <- newTVarIO Nothing
+ = do responce <- newTVarIO $ Response {
+ resVersion = HttpVersion 1 1
+ , resStatus = Ok
+ , resHeaders = [("Content-Type", defaultPageContentType)]
+ }
requestHasBody <- newTVarIO False
requestIsChunked <- newTVarIO False