Description
Tiny and Incrementally-Growing HTTP library.
Description
Example programs
examples/get.hs
This is simple client. This send GET request and show page source. Run as following.
runhaskell get.hs hackage.haskell.org /packages/
extensions
PackageImports
import "monads-tf" Control.Monad.Trans
import Data.Pipe
import System.Environment
import Network
import Network.TigHTTP.Client
import Network.TigHTTP.Types
import qualified Data.ByteString as BS
main :: IO ()
main = do
addr : pth : _ <- getArgs
h <- connectTo addr $ PortNumber 80
r <- request h $ get addr 80 pth
_ <- runPipe $ responseBody r =$= finally printP (putStrLn "")
return ()
printP :: MonadIO m => Pipe BS.ByteString () m ()
printP = await >>= maybe (return ()) (\s -> liftIO (BS.putStr s) >> printP)
examples/server.hs
This is simple server. This recieve client's request. And send command line arguments as response. Run as following.
runhaskell server.hs Hello World I Am TigHTTP
import Control.Monad
import Control.Concurrent
import Data.Pipe
import System.IO
import System.Environment
import Network
import Network.TigHTTP.Server
import Network.TigHTTP.Types
import qualified Data.ByteString.Char8 as BSC
import qualified Data.ByteString.Lazy as LBS
main :: IO ()
main = do
as <- getArgs
soc <- listenOn $ PortNumber 80
forever $ do
(h, _, _) <- accept soc
void . forkIO $ do
req <- getRequest h
print $ requestPath req
putResponse h
. (response :: LBS.ByteString -> Response Pipe Handle)
. LBS.fromChunks $ map BSC.pack as
If you want more examples. Please see examples directory.