tighttp-0.0.0.6: Tiny and Incrementally-Growing HTTP library
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.