wreq-0.1.0.0: An easy-to-use HTTP client library.

PortabilityGHC
Stabilityexperimental
Maintainerbos@serpentine.com
Safe HaskellNone

Network.Wreq.Types

Contents

Description

HTTP client types.

Synopsis

Client configuration

data Options

Options for configuring a client.

Constructors

Options 

Fields

manager :: Either ManagerSettings Manager

Either configuration for a Manager, or an actual Manager.

If only ManagerSettings are provided, then by default a new Manager will be created for each request.

Note: when issuing HTTP requests using Options-based functions from the the Network.Wreq.Session module (getWith, putWith, etc.), this field will be ignored.

An example of using a specific manager:

import Network.HTTP.Client (withManager)

withManager $ \mgr -> do
  let opts = defaults { manager = Right mgr }
  getWith opts "http://httpbin.org/get"

An example of changing settings (this will use a separate Manager for every request, so make sense only if you're issuing a tiny handful of requets):

import Network.HTTP.Client (defaultManagerSettings)

let settings = defaultManagerSettings { managerConnCount = 5 }
    opts = defaults { manager = Left settings }
getWith opts "http://httpbin.org/get"
proxy :: Maybe Proxy

Host name and port for a proxy to use, if any.

auth :: Maybe Auth

Authentication information.

Example (note the use of TLS):

let opts = defaults { auth = basicAuth "user" "pass" }
getWith opts "https://httpbin.org/basic-auth/user/pass"
headers :: [Header]

Additional headers to send with each request.

let opts = defaults { headers = [("Accept", "*/*")] }
getWith opts "http://httpbin.org/get"
params :: [(Text, Text)]

Key-value pairs to assemble into a query string to add to the end of a URL.

For example, given:

let opts = defaults { params = [("sort", "ascending"), ("key", "name")] }
getWith opts "http://httpbin.org/get"

This will generate a URL of the form:

http://httpbin.org/get?sort=ascending&key=name
redirects :: Int

The maximum number of HTTP redirects to follow before giving up and throwing an exception.

In this example, a HttpException will be thrown with a TooManyRedirects constructor, because the maximum number of redirects allowed will be exceeded:

let opts = defaults { redirects = 3 }
getWith opts "http://httpbin.org/redirect/5"
cookies :: CookieJar

Cookies to set when issuing requests.

Note: when issuing HTTP requests using Options-based functions from the the Network.Wreq.Session module (getWith, putWith, etc.), this field will be used only for the first HTTP request to be issued during a Session. Any changes changes made for subsequent requests will be ignored.

data Auth

Supported authentication types.

Do not use HTTP authentication unless you are using TLS encryption. These authentication tokens can easily be captured and reused by an attacker if transmitted in the clear.

Constructors

BasicAuth ByteString ByteString

Basic authentication. This consists of a plain username and password.

OAuth2Bearer ByteString

An OAuth2 bearer token. This is treated by many services as the equivalent of a username and password.

OAuth2Token ByteString

A not-quite-standard OAuth2 bearer token (that seems to be used only by GitHub). This is treated by whoever accepts it as the equivalent of a username and password.

Instances

Request payloads

data Payload where

A product type for representing more complex payload types.

Constructors

Raw :: ContentType -> RequestBody -> Payload 

class Postable a where

A type that can be converted into a POST request payload.

Methods

postPayload :: a -> Request -> IO Request

Represent a value in the request body (and perhaps the headers) of a POST request.

class Putable a where

A type that can be converted into a PUT request payload.

Methods

putPayload :: a -> Request -> IO Request

Represent a value in the request body (and perhaps the headers) of a PUT request.

URL-encoded forms

data FormParam where

A key/value pair for an application/x-www-form-urlencoded POST request body.

Constructors

:= :: FormValue v => ByteString -> v -> FormParam 

class FormValue a where

A type that can be rendered as the value portion of a key/value pair for use in an application/x-www-form-urlencoded POST body. Intended for use with the FormParam type.

The instances for String, strict Text, and lazy Text are all encoded using UTF-8 before being URL-encoded.

The instance for Maybe gives an empty string on Nothing, and otherwise uses the contained type's instance.

Methods

renderFormValue :: a -> ByteString

Render the given value.

Headers

type ContentType = ByteString

A MIME content type, e.g. "application/octet-stream".

data Link

An element of a Link header.

Constructors

Link 

Errors

data JSONError

The error type used by asJSON and asValue if a failure occurs when parsing a response body as JSON.

Constructors

JSONError String