packages feed

network-minihttp-0.2: examples/webcat.hs

{-# LANGUAGE OverloadedStrings #-}
module Main where

import qualified Data.ByteString.Lazy as BL
import           Data.String (fromString)

import qualified Network.Connection as C
import qualified Network.MiniHTTP.Client as Client
import qualified Network.MiniHTTP.URL as URL
import           Network.MiniHTTP.Marshal (emptyHeaders)
import           Network.MiniHTTP.HTTPConnection (sourceToLBS)

import           OpenSSL (withOpenSSL)

import System.Environment (getArgs)

main = withOpenSSL main'

main' = do
  args <- getArgs
  case args of
       [urlstring] -> do
         case URL.parse $ fromString urlstring of
              Nothing -> fail "Cannot parse URL"
              Just url -> do
                (conn, reply, msource) <- Client.fetchBasic emptyHeaders url
                print reply
                case msource of
                     Nothing -> C.close conn
                     Just source -> do
                       lbs <- sourceToLBS source
                       BL.putStr lbs
                       C.close conn
       _ -> fail "Please give a URL as the only argument"