{-# LANGUAGE RecordWildCards, OverloadedStrings #-}
module Acme.Response where

import Data.ByteString       (ByteString, append)
import Data.ByteString.Char8 () -- instance IsString ByteString


------------------------------------------------------------------------------
-- send a response
------------------------------------------------------------------------------

pong :: (ByteString -> IO ()) -> IO ()
pong send =
    do send "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\nPONG"

{-
sendResponse :: Response -> (ByteString -> IO
sendResponse _ =
    do -- lift  $ liftIO $ putStrLn "responding..."
       yield $ statusLine rsCode `append` "Content-Length: 4\r\n\r\nPONG"
       return ()
-}

------------------------------------------------------------------------------
-- Status Lines
------------------------------------------------------------------------------

{-
  Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
-}

-- FIXME: can the http version always be 1.1 or do we need to match the caller?
statusLine :: Int -> ByteString
statusLine 200 = ok_status

ok_status :: ByteString
ok_status = "HTTP/1.1 200 OK\r\n"