pipes-http-1.0.4: HTTP client with pipes interface

Safe HaskellNone
LanguageHaskell98

Pipes.HTTP

Contents

Description

Here is an example GET request that streams the response body to standard output:

import Pipes
import Pipes.HTTP
import qualified Pipes.ByteString as PB  -- from `pipes-bytestring`

main = do
    req <- parseUrl "https://www.example.com"
    withManager tlsManagerSettings $ \m ->
        withHTTP req m $ \resp ->
            runEffect $ responseBody resp >-> PB.stdout

Here is an example POST request that also streams the request body from standard input:

{-# LANGUAGE OverloadedStrings #-}

import Pipes
import Pipes.HTTP
import qualified Pipes.ByteString as PB

main = do
    req <- parseUrl "https://www.example.com"
    let req' = req
            { method = "POST"
            , requestBody = stream PB.stdin
            }
    withManager tlsManagerSettings $ \m ->
        withHTTP req' m $ \resp ->
            runEffect $ responseBody resp >-> PB.stdout

For non-streaming request bodies, study the RequestBody type, which also accepts strict / lazy bytestrings or builders.

Synopsis

http-client

This module is a thin pipes wrapper around the http-client and http-client-tls libraries.

Read the documentation in the Network.HTTP.Client module of the http-client library to learn about how to:

  • manage connections using connection pooling,
  • use more advanced request/response features,
  • handle exceptions, and:
  • manage cookies.

http-client-tls provides support for TLS connections (i.e. HTTPS).

Pipes Interface

withHTTP Source #

Arguments

:: Request 
-> Manager 
-> (Response (Producer ByteString IO ()) -> IO a)

Handler for response

-> IO a 

Send an HTTP Request and wait for an HTTP Response

streamN :: Int64 -> Producer ByteString IO () -> RequestBody Source #

Create a RequestBody from a content length and Producer

stream :: Producer ByteString IO () -> RequestBody Source #

Create a RequestBody from a Producer

stream is more flexible than streamN, but requires the server to support chunked transfer encoding.