packages feed

tighttp-0.0.0.0: examples/posts.hs

{-# LANGUAGE OverloadedStrings, TupleSections, PackageImports #-}

import Control.Applicative
import Control.Monad
import "monads-tf" Control.Monad.Trans
import Data.Pipe
import System.Environment
import Network
import Network.PeyoTLS.Client
import Network.PeyoTLS.ReadFile
import Network.TigHTTP.Client
import Network.TigHTTP.Types
import "crypto-random" Crypto.Random

import qualified Data.ByteString.Char8 as BSC
import qualified Data.ByteString.Lazy as LBS

main :: IO ()
main = do
	addr : pth : msgs <- getArgs
	ca <- readCertificateStore ["cacert.sample_pem"]
	h <- connectTo addr $ PortNumber 443
	g <- cprgCreate <$> createEntropyPool :: IO SystemRNG
	void . (`run` g) $ do
		t <- open h ["TLS_RSA_WITH_AES_128_CBC_SHA"] [] ca
		r <- request t . post addr 443 pth . (Nothing ,) .
			LBS.fromChunks $ map BSC.pack msgs
		runPipe $ responseBody r =$= printP

printP :: MonadIO m => Pipe BSC.ByteString () m ()
printP = await >>= maybe (return ()) (\s -> liftIO (BSC.putStr s) >> printP)