@@ -283,37 +283,40 @@ instance OVERLAPPING_
285instance OVERLAPPABLE_
285instance OVERLAPPABLE_
286− ( MimeRender ctype a, ReflectMethod method,
286+ ( MimeRender ctype a, ReflectMethod method, KnownNat status,
287 FramingRender framing ctype, ToStreamGenerator b a
287 FramingRender framing ctype, ToStreamGenerator b a
288− ) => HasServer (Stream method framing ctype b) context where
288+ ) => HasServer (Stream method status framing ctype b) context where
290− type ServerT (Stream method framing ctype b) m = m b
290+ type ServerT (Stream method status framing ctype b) m = m b
291 hoistServerWithContext _ _ nt s = nt s
291 hoistServerWithContext _ _ nt s = nt s
293− route Proxy _ = streamRouter ([],) method (Proxy :: Proxy framing) (Proxy :: Proxy ctype)
293+ route Proxy _ = streamRouter ([],) method status (Proxy :: Proxy framing) (Proxy :: Proxy ctype)
294 where method = reflectMethod (Proxy :: Proxy method)
294 where method = reflectMethod (Proxy :: Proxy method)
295+ status = toEnum . fromInteger $ natVal (Proxy :: Proxy status)
296instance OVERLAPPING_
297instance OVERLAPPING_
297− ( MimeRender ctype a, ReflectMethod method,
298+ ( MimeRender ctype a, ReflectMethod method, KnownNat status,
298 FramingRender framing ctype, ToStreamGenerator b a,
299 FramingRender framing ctype, ToStreamGenerator b a,
299 GetHeaders (Headers h b)
300 GetHeaders (Headers h b)
300− ) => HasServer (Stream method framing ctype (Headers h b)) context where
301+ ) => HasServer (Stream method status framing ctype (Headers h b)) context where
302− type ServerT (Stream method framing ctype (Headers h b)) m = m (Headers h b)
303+ type ServerT (Stream method status framing ctype (Headers h b)) m = m (Headers h b)
303 hoistServerWithContext _ _ nt s = nt s
304 hoistServerWithContext _ _ nt s = nt s
305− route Proxy _ = streamRouter (\x -> (getHeaders x, getResponse x)) method (Proxy :: Proxy framing) (Proxy :: Proxy ctype)
306+ route Proxy _ = streamRouter (\x -> (getHeaders x, getResponse x)) method status (Proxy :: Proxy framing) (Proxy :: Proxy ctype)
306 where method = reflectMethod (Proxy :: Proxy method)
307 where method = reflectMethod (Proxy :: Proxy method)
308+ status = toEnum . fromInteger $ natVal (Proxy :: Proxy status)
309streamRouter :: (MimeRender ctype a, FramingRender framing ctype, ToStreamGenerator b a) =>
311streamRouter :: (MimeRender ctype a, FramingRender framing ctype, ToStreamGenerator b a) =>
310 (c -> ([(HeaderName, B.ByteString)], b))
312 (c -> ([(HeaderName, B.ByteString)], b))
311 -> Method
313 -> Method
312 -> Proxy framing
315 -> Proxy framing
313 -> Proxy ctype
316 -> Proxy ctype
314 -> Delayed env (Handler c)
317 -> Delayed env (Handler c)
315 -> Router env
318 -> Router env
316−streamRouter splitHeaders method framingproxy ctypeproxy action = leafRouter $ \env request respond ->
319+streamRouter splitHeaders method status framingproxy ctypeproxy action = leafRouter $ \env request respond ->
317 let accH = fromMaybe ct_wildcard $ lookup hAccept $ requestHeaders request
320 let accH = fromMaybe ct_wildcard $ lookup hAccept $ requestHeaders request
318 cmediatype = NHM.matchAccept [contentType ctypeproxy] accH
321 cmediatype = NHM.matchAccept [contentType ctypeproxy] accH
319 accCheck = when (isNothing cmediatype) $ delayedFail err406
322 accCheck = when (isNothing cmediatype) $ delayedFail err406
@@ -323,7 +326,7 @@ streamRouter splitHeaders method framingproxy ctypeproxy action = leafRouter $ \
323 ) env request respond $ \ output ->
326 ) env request respond $ \ output ->
324 let (headers, fa) = splitHeaders output
327 let (headers, fa) = splitHeaders output
325 k = getStreamGenerator . toStreamGenerator $ fa in
328 k = getStreamGenerator . toStreamGenerator $ fa in
326− Route $ responseStream status200 (contentHeader : headers) $ \write flush -> do
329+ Route $ responseStream status (contentHeader : headers) $ \write flush -> do
327 write . BB.lazyByteString $ header framingproxy ctypeproxy
330 write . BB.lazyByteString $ header framingproxy ctypeproxy
328 case boundary framingproxy ctypeproxy of
331 case boundary framingproxy ctypeproxy of
329 BoundaryStrategyBracket f ->
332 BoundaryStrategyBracket f ->