HTTP-4000.3.16: A library for client-side HTTP
CopyrightSee LICENSE file
MaintainerGanesh Sittampalam <>
Portabilitynon-portable (not tested)
Safe HaskellSafe-Inferred



An library for creating abstract streams. Originally part of Gray's/Bringert's HTTP module.

  • Changes by Robin Bate Boerop
  • Removed unnecessary import statements.
  • Moved Debug code to StreamDebugger.hs
  • Moved Socket-related code to StreamSocket.hs.
  • Changes by Simon Foster:
  • Split Network.HTTPmodule up into to separate Network.[Stream,TCP,HTTP] modules


class Stream x where Source #

Streams should make layering of TLS protocol easier in future, they allow reading/writing to files etc for debugging, they allow use of protocols other than TCP/IP and they allow customisation.

Instances of this class should not trim the input in any way, e.g. leave LF on line endings etc. Unless that is exactly the behaviour you want from your twisted instances ;)


readLine :: x -> IO (Result String) Source #

readBlock :: x -> Int -> IO (Result String) Source #

writeBlock :: x -> String -> IO (Result ()) Source #

close :: x -> IO () Source #

closeOnEnd Source #


:: x 
-> Bool 
-> IO ()

True => shutdown the connection when response has been read / end-of-stream has been reached.

data ConnError Source #


Instances details
Eq ConnError Source # 
Instance details

Defined in Network.Stream

Show ConnError Source # 
Instance details

Defined in Network.Stream

Error ConnError Source # 
Instance details

Defined in Network.Stream

type Result a = Either ConnError a Source #

This is the type returned by many exported network functions.

bindE :: Result a -> (a -> Result b) -> Result b Source #

fmapE :: (a -> Result b) -> IO (Result a) -> IO (Result b) Source #