@@ -106,8 +106,16 @@ data SResponse = SResponse
106106 , simpleBody :: L.ByteString
107107 }
108108 deriving (Show, Eq)
109+
109110request :: Request -> Session SResponse
110−request = srequest . flip SRequest L.empty
111+request req = do
112+ app <- ask
113+ req' <- addCookiesToRequest req
114+ response <- liftIO $ do
115+ ref <- newIORef $ error "runResponse gave no result"
116+ ResponseReceived <- app req' (runResponse ref)
117+ readIORef ref
118+ extractSetCookieFromSResponse response
111119
112120-- | Set whole path (request path + query string).
113121setPath :: Request -> S8.ByteString -> Request
@@ -168,20 +176,14 @@ extractSetCookieFromSResponse response = do
168176
169177srequest :: SRequest -> Session SResponse
170178srequest (SRequest req bod) = do
171− app <- ask
172179 refChunks <- liftIO $ newIORef $ L.toChunks bod
173− let req' = req
174− { requestBody = atomicModifyIORef refChunks $ \bss ->
175− case bss of
176− [] -> ([], S.empty)
177− x:y -> (y, x)
178− }
179− req'' <- addCookiesToRequest req'
180− response <- liftIO $ do
181− ref <- newIORef $ error "runResponse gave no result"
182− ResponseReceived <- app req'' (runResponse ref)
183− readIORef ref
184− extractSetCookieFromSResponse response
180+ request $
181+ req
182+ { requestBody = atomicModifyIORef refChunks $ \bss ->
183+ case bss of
184+ [] -> ([], S.empty)
185+ x:y -> (y, x)
186+ }
185187
186188runResponse :: IORef SResponse -> Response -> IO ResponseReceived
187189runResponse ref res = do