@@ -283,37 +283,40 @@ instance OVERLAPPING_
283283
284284
285285instance OVERLAPPABLE_
286− ( MimeRender ctype a, ReflectMethod method,
286+ ( MimeRender ctype a, ReflectMethod method, KnownNat status,
287287 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
289289
290− type ServerT (Stream method framing ctype b) m = m b
290+ type ServerT (Stream method status framing ctype b) m = m b
291291 hoistServerWithContext _ _ nt s = nt s
292292
293− route Proxy _ = streamRouter ([],) method (Proxy :: Proxy framing) (Proxy :: Proxy ctype)
293+ route Proxy _ = streamRouter ([],) method status (Proxy :: Proxy framing) (Proxy :: Proxy ctype)
294294 where method = reflectMethod (Proxy :: Proxy method)
295+ status = toEnum . fromInteger $ natVal (Proxy :: Proxy status)
295296
296297instance OVERLAPPING_
297− ( MimeRender ctype a, ReflectMethod method,
298+ ( MimeRender ctype a, ReflectMethod method, KnownNat status,
298299 FramingRender framing ctype, ToStreamGenerator b a,
299300 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
301302
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)
303304 hoistServerWithContext _ _ nt s = nt s
304305
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)
306307 where method = reflectMethod (Proxy :: Proxy method)
308+ status = toEnum . fromInteger $ natVal (Proxy :: Proxy status)
307309
308310
309311streamRouter :: (MimeRender ctype a, FramingRender framing ctype, ToStreamGenerator b a) =>
310312 (c -> ([(HeaderName, B.ByteString)], b))
311313 -> Method
314+ -> Status
312315 -> Proxy framing
313316 -> Proxy ctype
314317 -> Delayed env (Handler c)
315318 -> 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 ->
317320 let accH = fromMaybe ct_wildcard $ lookup hAccept $ requestHeaders request
318321 cmediatype = NHM.matchAccept [contentType ctypeproxy] accH
319322 accCheck = when (isNothing cmediatype) $ delayedFail err406
@@ -323,7 +326,7 @@ streamRouter splitHeaders method framingproxy ctypeproxy action = leafRouter $ \
323326 ) env request respond $ \ output ->
324327 let (headers, fa) = splitHeaders output
325328 k = getStreamGenerator . toStreamGenerator $ fa in
326− Route $ responseStream status200 (contentHeader : headers) $ \write flush -> do
329+ Route $ responseStream status (contentHeader : headers) $ \write flush -> do
327330 write . BB.lazyByteString $ header framingproxy ctypeproxy
328331 case boundary framingproxy ctypeproxy of
329332 BoundaryStrategyBracket f ->