-hPutResponse ∷ HandleLike h => h → Response → IO ()
-hPutResponse h res
- = do hPutHttpVersion h (resVersion res)
- hPutChar h ' '
- hPutStatus h (resStatus res)
- hPutBS h "\r\n"
- hPutHeaders h (resHeaders res)
-
-hPutStatus ∷ HandleLike h => h → StatusCode → IO ()
-hPutStatus h sc
- = case statusCode sc of
- (# num, msg #)
- → do hPutStr h (fmtDec 3 num)
- hPutChar h ' '
- hPutBS h msg
-
--- |@'isInformational' sc@ is 'Prelude.True' iff @sc < 200@.
+-- |Returns 'True' iff a given 'Response' allows the existence of
+-- response entity body.
+resCanHaveBody ∷ Response → Bool
+{-# INLINEABLE resCanHaveBody #-}
+resCanHaveBody (Response {..})
+ | isInformational resStatus = False
+ | resStatus ≡ NoContent = False
+ | resStatus ≡ ResetContent = False
+ | resStatus ≡ NotModified = False
+ | otherwise = True
+
+-- |Convert a 'Response' to 'AsciiBuilder'.
+printResponse ∷ Response → AsciiBuilder
+{-# INLINEABLE printResponse #-}
+printResponse (Response {..})
+ = printHttpVersion resVersion ⊕
+ A.toAsciiBuilder " " ⊕
+ printStatusCode resStatus ⊕
+ A.toAsciiBuilder "\x0D\x0A" ⊕
+ printHeaders resHeaders
+
+-- |@'isInformational' sc@ returns 'True' iff @sc < 200@.