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

Copyright | (c) 2014 Bryan O'Sullivan
License | BSD-style
Maintainer | bos@serpentine.com
Stability | experimental
Portability | GHC
Safe Haskell | None
Language | Haskell98

Network.Wreq.Lens

Contents

- Configuration
  - Proxy setup
- Cookie
- Response
- HistoriedResponse
  - Status
- Link header
- POST body part
- Parsing

Description

HTTP client lens machinery.

When reading the examples in this module, you should assume the following environment:

    -- Make it easy to write literal ByteString and Text values.
    {-# LANGUAGE OverloadedStrings #-}

    -- Our handy module.
    import Network.Wreq

    -- Operators such as (&) and (.~).
    import Control.Lens

    -- Conversion of Haskell values to JSON.
    import Data.Aeson (toJSON)

    -- Easy traversal of JSON data.
    import Data.Aeson.Lens (key, nth)

Synopsis

- data Options
- manager :: Lens' Options (Either ManagerSettings Manager)
- proxy :: Lens' Options (Maybe Proxy)
- auth :: Lens' Options (Maybe Auth)
- header :: HeaderName -> Lens' Options [ByteString]
- param :: Text -> Lens' Options [Text]
- redirects :: Lens' Options Int
- headers :: Lens' Options [Header]
- params :: Lens' Options [(Text, Text)]
- cookie :: ByteString -> Traversal' Options Cookie
- cookies :: Lens' Options (Maybe CookieJar)
- type ResponseChecker = Request -> Response BodyReader -> IO ()
- checkResponse :: Lens' Options (Maybe ResponseChecker)
- data Proxy
- proxyHost :: Lens' Proxy ByteString
- proxyPort :: Lens' Proxy Int
- data Cookie
- cookieName :: Lens' Cookie ByteString
- cookieValue :: Lens' Cookie ByteString
- cookieExpiryTime :: Lens' Cookie UTCTime
- cookieDomain :: Lens' Cookie ByteString
- cookiePath :: Lens' Cookie ByteString
- cookieCreationTime :: Lens' Cookie UTCTime
- cookieLastAccessTime :: Lens' Cookie UTCTime
- cookiePersistent :: Lens' Cookie Bool
- cookieHostOnly :: Lens' Cookie Bool
- cookieSecureOnly :: Lens' Cookie Bool
- cookieHttpOnly :: Lens' Cookie Bool
- data Response body
- responseBody :: forall body0 body1 f. Functor f => (body0 -> f body1) -> Response body0 -> f (Response body1)
- responseHeader :: HeaderName -> Traversal' (Response body) ByteString
- responseLink :: ByteString -> ByteString -> Fold (Response body) Link
- responseCookie :: ByteString -> Fold (Response body) Cookie
- responseHeaders :: forall body f. Functor f => (ResponseHeaders -> f ResponseHeaders) -> Response body -> f (Response body)
- responseCookieJar :: forall body f. Functor f => (CookieJar -> f CookieJar) -> Response body -> f (Response body)
- responseStatus :: forall body f. Functor f => (Status -> f Status) -> Response body -> f (Response body)
- responseVersion :: forall body f. Functor f => (HttpVersion -> f HttpVersion) -> Response body -> f (Response body)
- data HistoriedResponse body
- hrFinalResponse :: forall body f. Functor f => (Response body -> f (Response body)) -> HistoriedResponse body -> f (HistoriedResponse body)
- hrFinalRequest :: forall body f. Functor f => (Request -> f Request) -> HistoriedResponse body -> f (HistoriedResponse body)
- hrRedirects :: forall body f. Functor f => ([(Request, Response ByteString)] -> f [(Request, Response ByteString)]) -> HistoriedResponse body -> f (HistoriedResponse body)
- data Status
- statusCode :: Lens' Status Int
- statusMessage :: Lens' Status ByteString
- data Link
- linkURL :: Lens' Link ByteString
- linkParams :: Lens' Link [(ByteString, ByteString)]
- type Part = PartM IO
- partName :: Lens' Part Text
- partFileName :: Lens' Part (Maybe String)
- partContentType :: Traversal' Part (Maybe MimeType)
- partGetBody :: Lens' Part (IO RequestBody)
- atto :: Parser a -> Fold ByteString a
- atto_ :: Parser a -> Fold ByteString a

# Configuration

data Options Source #

Options for configuring a client.

#### Instances

Instances details

Show Options Source # |
Instance details Defined in Network.Wreq.Internal.Types Methods showsPrec :: Int -> Options -> ShowS Source # show :: Options -> String Source # showList :: [Options] -> ShowS Source #

manager :: Lens' Options (Either ManagerSettings Manager) Source #

A lens onto configuration of the connection manager provided by the http-client package.

In this example, we enable the use of OpenSSL for (hopefully) secure connections:

    import OpenSSL.Session (context)
    import Network.HTTP.Client.OpenSSL

    let opts = defaults & manager .~ Left (opensslManagerSettings context)
    withOpenSSL $
      getWith opts "https://httpbin.org/get"

In this example, we also set the response timeout to 10000 microseconds:

    import OpenSSL.Session (context)
    import Network.HTTP.Client.OpenSSL
    import Network.HTTP.Client (defaultManagerSettings, managerResponseTimeout)

    let opts = defaults & manager .~ Left (opensslManagerSettings context)
                        & manager .~ Left (defaultManagerSettings { managerResponseTimeout = responseTimeoutMicro 10000 } )

    withOpenSSL $
      getWith opts "https://httpbin.org/get"

proxy :: Lens' Options (Maybe Proxy) Source #

A lens onto proxy configuration.

Example:

    let opts = defaults & proxy ?~ httpProxy "localhost" 8000
    getWith opts "http://httpbin.org/get"

Note here the use of the `?~` setter to turn a `Proxy` into a `Maybe` `Proxy`, to make the type of the RHS compatible with the `proxy` lens.

auth :: Lens' Options (Maybe Auth) Source #

A lens onto request authentication.

Example (note the use of TLS):

    let opts = defaults & auth ?~ basicAuth "user" "pass"
    getWith opts "https://httpbin.org/basic-auth/user/pass"

header :: HeaderName -> Lens' Options [ByteString] Source #

A lens onto all headers with the given name (there can legitimately be zero or more).

Example:

    let opts = defaults & header "Accept" .~ ["*/*"]
    getWith opts "http://httpbin.org/get"

param :: Text -> Lens' Options [Text] Source #

A lens onto all query parameters with the given name (there can legitimately be zero or more).

In this example, we construct the query URL "`http://httpbin.org/get?foo=bar&foo=quux`".

    let opts = defaults & param "foo" .~ ["bar", "quux"]
    getWith opts "http://httpbin.org/get"

redirects :: Lens' Options Int Source #

A lens onto the maximum number of redirects that will be followed before an exception is thrown.

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"

headers :: Lens' Options [Header] Source #

A lens onto all headers (there can legitimately be zero or more).

In this example, we print all the headers sent by default with every request.

    print (defaults ^. headers)

params :: Lens' Options [(Text, Text)] Source #

A lens onto all query parameters.

cookie :: ByteString -> Traversal' Options Cookie Source #

A traversal onto the cookie with the given name, if one exists.

N.B. This is an "illegal" `Traversal'`: we can change the `cookieName` of the associated `Cookie` so that it differs from the name provided to this function.

cookies :: Lens' Options (Maybe CookieJar) Source #

A lens onto all cookies.

type ResponseChecker = Request -> Response BodyReader -> IO () Source #

A function that checks the result of a HTTP request and potentially throw an exception.

checkResponse :: Lens' Options (Maybe ResponseChecker) Source #

A lens to get the optional status check function

## Proxy setup

data Proxy Source #

Define a HTTP proxy, consisting of a hostname and port number.

#### Instances

Instances details

Read Proxy |
Instance details Defined in Network.HTTP.Client.Types Methods readsPrec :: Int -> ReadS Proxy Source # readList :: ReadS [Proxy] Source # readPrec :: ReadPrec Proxy Source # readListPrec :: ReadPrec [Proxy] Source #
Show Proxy |
Instance details Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> Proxy -> ShowS Source # show :: Proxy -> String Source # showList :: [Proxy] -> ShowS Source #
Eq Proxy |
Instance details Defined in Network.HTTP.Client.Types Methods (==) :: Proxy -> Proxy -> Bool Source # (/=) :: Proxy -> Proxy -> Bool Source #
Ord Proxy |
Instance details Defined in Network.HTTP.Client.Types Methods compare :: Proxy -> Proxy -> Ordering Source # (<) :: Proxy -> Proxy -> Bool Source # (<=) :: Proxy -> Proxy -> Bool Source # (>) :: Proxy -> Proxy -> Bool Source # (>=) :: Proxy -> Proxy -> Bool Source # max :: Proxy -> Proxy -> Proxy Source # min :: Proxy -> Proxy -> Proxy Source #

proxyHost :: Lens' Proxy ByteString Source #

A lens onto the hostname portion of a proxy configuration.

proxyPort :: Lens' Proxy Int Source #

A lens onto the TCP port number of a proxy configuration.

# Cookie

data Cookie Source #

#### Instances

Instances details

Read Cookie |
Instance details Defined in Network.HTTP.Client.Types Methods readsPrec :: Int -> ReadS Cookie Source # readList :: ReadS [Cookie] Source # readPrec :: ReadPrec Cookie Source # readListPrec :: ReadPrec [Cookie] Source #
Show Cookie |
Instance details Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> Cookie -> ShowS Source # show :: Cookie -> String Source # showList :: [Cookie] -> ShowS Source #

cookieName :: Lens' Cookie ByteString Source #

A lens onto the name of a cookie.

cookieValue :: Lens' Cookie ByteString Source #

A lens onto the value of a cookie.

cookieExpiryTime :: Lens' Cookie UTCTime Source #

A lens onto the expiry time of a cookie.

cookieDomain :: Lens' Cookie ByteString Source #

A lens onto the domain of a cookie.

cookiePath :: Lens' Cookie ByteString Source #

A lens onto the path of a cookie.

cookieCreationTime :: Lens' Cookie UTCTime Source #

A lens onto the creation time of a cookie.

cookieLastAccessTime :: Lens' Cookie UTCTime Source #

A lens onto the last access time of a cookie.

cookiePersistent :: Lens' Cookie Bool Source #

A lens onto whether a cookie is persistent across sessions (also known as a "tracking cookie").

cookieHostOnly :: Lens' Cookie Bool Source #

A lens onto whether a cookie is host-only.

cookieSecureOnly :: Lens' Cookie Bool Source #

A lens onto whether a cookie is secure-only, such that it will only be used over TLS.

cookieHttpOnly :: Lens' Cookie Bool Source #

A lens onto whether a cookie is "HTTP-only".

Such cookies should be used only by browsers when transmitting HTTP requests. They must be unavailable in non-browser environments, such as when executing JavaScript scripts.

# Response

data Response body Source #

A simple representation of the HTTP response.

Since 0.1.0

#### Instances

Instances details

Functor Response |
Instance details Defined in Network.HTTP.Client.Types Methods fmap :: (a -> b) -> Response a -> Response b Source # (<$) :: a -> Response b -> Response a Source #
Foldable Response |

Instance details

Defined in Network.HTTP.Client.Types

Methods

fold :: Monoid m => Response m -> m Source #

foldMap :: Monoid m => (a -> m) -> Response a -> m Source #

foldMap' :: Monoid m => (a -> m) -> Response a -> m Source #

foldr :: (a -> b -> b) -> b -> Response a -> b Source #

foldr' :: (a -> b -> b) -> b -> Response a -> b Source #

foldl :: (b -> a -> b) -> b -> Response a -> b Source #

foldl' :: (b -> a -> b) -> b -> Response a -> b Source #

foldr1 :: (a -> a -> a) -> Response a -> a Source #

foldl1 :: (a -> a -> a) -> Response a -> a Source #

toList :: Response a -> [a] Source #

null :: Response a -> Bool Source #

length :: Response a -> Int Source #

elem :: Eq a => a -> Response a -> Bool Source #

maximum :: Ord a => Response a -> a Source #

minimum :: Ord a => Response a -> a Source #

sum :: Num a => Response a -> a Source #

product :: Num a => Response a -> a Source #

Traversable Response |
Instance details Defined in Network.HTTP.Client.Types Methods traverse :: Applicative f => (a -> f b) -> Response a -> f (Response b) Source # sequenceA :: Applicative f => Response (f a) -> f (Response a) Source # mapM :: Monad m => (a -> m b) -> Response a -> m (Response b) Source # sequence :: Monad m => Response (m a) -> m (Response a) Source #
Show body => Show (Response body) |
Instance details Defined in Network.HTTP.Client.Types Methods showsPrec :: Int -> Response body -> ShowS Source # show :: Response body -> String Source # showList :: [Response body] -> ShowS Source #

responseBody :: forall body0 body1 f. Functor f => (body0 -> f body1) -> Response body0 -> f (Response body1) Source #

A lens onto the body of a response.

    r <- get "http://httpbin.org/get"
    print (r ^. responseBody)

responseHeader Source #

Arguments

:: HeaderName | Header name to match.
-> Traversal' (Response body) ByteString |

A lens onto all matching named headers in an HTTP response.

To access exactly one header (the result will be the empty string if there is no match), use the (`^.`) operator.

    r <- get "http://httpbin.org/get"
    print (r ^. responseHeader "Content-Type")

To access at most one header (the result will be `Nothing` if there is no match), use the (`^?`) operator.

    r <- get "http://httpbin.org/get"
    print (r ^? responseHeader "Content-Transfer-Encoding")

To access all (zero or more) matching headers, use the (`^..`) operator.

    r <- get "http://httpbin.org/get"
    print (r ^.. responseHeader "Set-Cookie")

responseLink Source #

Arguments

:: ByteString | Parameter name to match.
-> ByteString | Parameter value to match.
-> Fold (Response body) Link |

A fold over `Link` headers, matching on both parameter name and value.

For example, here is a `Link` header returned by the GitHub search API.

    Link:
      <https://api.github.com/search/code?q=addClass+user%3Amozilla&page=2>; rel="next",
      <https://api.github.com/search/code?q=addClass+user%3Amozilla&page=34>; rel="last"

And here is an example of how we can retrieve the URL for the `next` link programatically.

    r <- get "https://api.github.com/search/code?q=addClass+user:mozilla"
    print (r ^? responseLink "rel" "next" . linkURL)

responseCookie Source #

Arguments

:: ByteString | Name of cookie to match.
-> Fold (Response body) Cookie |

A fold over any cookies that match the given name.

    r <- get "http://www.nytimes.com/"
    print (r ^? responseCookie "RMID")

responseHeaders :: forall body f. Functor f => (ResponseHeaders -> f ResponseHeaders) -> Response body -> f (Response body) Source #

A lens onto all headers in an HTTP response.

responseCookieJar :: forall body f. Functor f => (CookieJar -> f CookieJar) -> Response body -> f (Response body) Source #

A lens onto all cookies set in the response.

responseStatus :: forall body f. Functor f => (Status -> f Status) -> Response body -> f (Response body) Source #

A lens onto the status of an HTTP response.

responseVersion :: forall body f. Functor f => (HttpVersion -> f HttpVersion) -> Response body -> f (Response body) Source #

A lens onto the version of an HTTP response.

# HistoriedResponse

data HistoriedResponse body Source #

A datatype holding information on redirected requests and the final response.

Since 0.4.1

#### Instances

Instances details

Functor HistoriedResponse |
Instance details Defined in Network.HTTP.Client Methods fmap :: (a -> b) -> HistoriedResponse a -> HistoriedResponse b Source # (<$) :: a -> HistoriedResponse b -> HistoriedResponse a Source #
Foldable HistoriedResponse |

Instance details

Defined in Network.HTTP.Client

Methods

fold :: Monoid m => HistoriedResponse m -> m Source #

foldMap :: Monoid m => (a -> m) -> HistoriedResponse a -> m Source #

foldMap' :: Monoid m => (a -> m) -> HistoriedResponse a -> m Source #

foldr :: (a -> b -> b) -> b -> HistoriedResponse a -> b Source #

foldr' :: (a -> b -> b) -> b -> HistoriedResponse a -> b Source #

foldl :: (b -> a -> b) -> b -> HistoriedResponse a -> b Source #

foldl' :: (b -> a -> b) -> b -> HistoriedResponse a -> b Source #

foldr1 :: (a -> a -> a) -> HistoriedResponse a -> a Source #

foldl1 :: (a -> a -> a) -> HistoriedResponse a -> a Source #

toList :: HistoriedResponse a -> [a] Source #

null :: HistoriedResponse a -> Bool Source #

length :: HistoriedResponse a -> Int Source #

elem :: Eq a => a -> HistoriedResponse a -> Bool Source #

maximum :: Ord a => HistoriedResponse a -> a Source #

minimum :: Ord a => HistoriedResponse a -> a Source #

sum :: Num a => HistoriedResponse a -> a Source #

product :: Num a => HistoriedResponse a -> a Source #

Traversable HistoriedResponse |

Instance details

Defined in Network.HTTP.Client

Methods

traverse :: Applicative f => (a -> f b) -> HistoriedResponse a -> f (HistoriedResponse b) Source #

sequenceA :: Applicative f => HistoriedResponse (f a) -> f (HistoriedResponse a) Source #

mapM :: Monad m => (a -> m b) -> HistoriedResponse a -> m (HistoriedResponse b) Source #

sequence :: Monad m => HistoriedResponse (m a) -> m (HistoriedResponse a) Source #

Generic (HistoriedResponse body) |

Instance details

Defined in Network.HTTP.Client

Associated Types

type Rep (HistoriedResponse body) |

Instance details

Defined in Network.HTTP.Client

type Rep (HistoriedResponse body) = D1 ('MetaData "HistoriedResponse" "Network.HTTP.Client" "http-client-0.7.19-CKCO2uxM4gv2WYcBEj2FOG" 'False) (C1 ('MetaCons "HistoriedResponse" 'PrefixI 'True) (S1 ('MetaSel ('Just "hrRedirects") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Request, Response ByteString)]) :*: (S1 ('MetaSel ('Just "hrFinalRequest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Request) :*: S1 ('MetaSel ('Just "hrFinalResponse") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Response body)))))

Methods

from :: HistoriedResponse body -> Rep (HistoriedResponse body) x Source #

to :: Rep (HistoriedResponse body) x -> HistoriedResponse body Source #

Show body => Show (HistoriedResponse body) |
Instance details Defined in Network.HTTP.Client Methods showsPrec :: Int -> HistoriedResponse body -> ShowS Source # show :: HistoriedResponse body -> String Source # showList :: [HistoriedResponse body] -> ShowS Source #
type Rep (HistoriedResponse body) |

Instance details

Defined in Network.HTTP.Client

type Rep (HistoriedResponse body) = D1 ('MetaData "HistoriedResponse" "Network.HTTP.Client" "http-client-0.7.19-CKCO2uxM4gv2WYcBEj2FOG" 'False) (C1 ('MetaCons "HistoriedResponse" 'PrefixI 'True) (S1 ('MetaSel ('Just "hrRedirects") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Request, Response ByteString)]) :*: (S1 ('MetaSel ('Just "hrFinalRequest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Request) :*: S1 ('MetaSel ('Just "hrFinalResponse") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Response body)))))

hrFinalResponse :: forall body f. Functor f => (Response body -> f (Response body)) -> HistoriedResponse body -> f (HistoriedResponse body) Source #

A lens onto the final response of a historied response.

hrFinalRequest :: forall body f. Functor f => (Request -> f Request) -> HistoriedResponse body -> f (HistoriedResponse body) Source #

A lens onto the final request of a historied response.

hrRedirects :: forall body f. Functor f => ([(Request, Response ByteString)] -> f [(Request, Response ByteString)]) -> HistoriedResponse body -> f (HistoriedResponse body) Source #

A lens onto the list of redirects of a historied response.

## Status

data Status Source #

HTTP Status.

Only the `statusCode` is used for comparisons.

Please use `mkStatus` to create status codes from code and message, or the `Enum` instance or the status code constants (like `ok200`). There might be additional record members in the future.

Note that the `Show` instance is only for debugging.

#### Instances

Instances details

Data Status | Since: http-types-0.12.4

Instance details

Defined in Network.HTTP.Types.Status

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Status -> c Status Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Status Source #

toConstr :: Status -> Constr Source #

dataTypeOf :: Status -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Status) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Status) Source #

gmapT :: (forall b. Data b => b -> b) -> Status -> Status Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Status -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Status -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> Status -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Status -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Status -> m Status Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Status -> m Status Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Status -> m Status Source #

Bounded Status | Since: http-types-0.11
Instance details Defined in Network.HTTP.Types.Status Methods minBound :: Status Source # maxBound :: Status Source #
Enum Status | Be advised, that when using the "enumFrom*" family of methods or ranges in lists, it will generate all possible status codes. E.g. `[status100 .. status200]` generates `Status`es of `100, 101, 102 .. 198, 199, 200` The statuses not included in this library will have an empty message. Since: http-types-0.7.3

Instance details

Defined in Network.HTTP.Types.Status

Methods

succ :: Status -> Status Source #

pred :: Status -> Status Source #

toEnum :: Int -> Status Source #

fromEnum :: Status -> Int Source #

enumFrom :: Status -> [Status] Source #

enumFromThen :: Status -> Status -> [Status] Source #

enumFromTo :: Status -> Status -> [Status] Source #

enumFromThenTo :: Status -> Status -> Status -> [Status] Source #

Generic Status |

Instance details

Defined in Network.HTTP.Types.Status

Associated Types

type Rep Status | Since: http-types-0.12.4

Instance details

Defined in Network.HTTP.Types.Status

type Rep Status = D1 ('MetaData "Status" "Network.HTTP.Types.Status" "http-types-0.12.4-1OvlBK9BqlVDFTI6Nz1ui2" 'False) (C1 ('MetaCons "Status" 'PrefixI 'True) (S1 ('MetaSel ('Just "statusCode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Just "statusMessage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

Methods

from :: Status -> Rep Status x Source #

to :: Rep Status x -> Status Source #

Show Status |
Instance details Defined in Network.HTTP.Types.Status Methods showsPrec :: Int -> Status -> ShowS Source # show :: Status -> String Source # showList :: [Status] -> ShowS Source #
Eq Status | A `Status` is equal to another `Status` if the status codes are equal.
Instance details Defined in Network.HTTP.Types.Status Methods (==) :: Status -> Status -> Bool Source # (/=) :: Status -> Status -> Bool Source #
Ord Status | `Status`es are ordered according to their status codes only.
Instance details Defined in Network.HTTP.Types.Status Methods compare :: Status -> Status -> Ordering Source # (<) :: Status -> Status -> Bool Source # (<=) :: Status -> Status -> Bool Source # (>) :: Status -> Status -> Bool Source # (>=) :: Status -> Status -> Bool Source # max :: Status -> Status -> Status Source # min :: Status -> Status -> Status Source #
type Rep Status | Since: http-types-0.12.4

Instance details

Defined in Network.HTTP.Types.Status

type Rep Status = D1 ('MetaData "Status" "Network.HTTP.Types.Status" "http-types-0.12.4-1OvlBK9BqlVDFTI6Nz1ui2" 'False) (C1 ('MetaCons "Status" 'PrefixI 'True) (S1 ('MetaSel ('Just "statusCode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Just "statusMessage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

statusCode :: Lens' Status Int Source #

A lens onto the numeric identifier of an HTTP status.

statusMessage :: Lens' Status ByteString Source #

A lens onto the textual description of an HTTP status.

# Link header

data Link Source #

An element of a `Link` header.

#### Instances

Instances details

Show Link Source # |
Instance details Defined in Network.Wreq.Internal.Types Methods showsPrec :: Int -> Link -> ShowS Source # show :: Link -> String Source # showList :: [Link] -> ShowS Source #
Eq Link Source # |
Instance details Defined in Network.Wreq.Internal.Types Methods (==) :: Link -> Link -> Bool Source # (/=) :: Link -> Link -> Bool Source #

linkURL :: Lens' Link ByteString Source #

A lens onto the URL portion of a `Link` element.

linkParams :: Lens' Link [(ByteString, ByteString)] Source #

A lens onto the parameters of a `Link` element.

# POST body part

type Part = PartM IO Source #

partName :: Lens' Part Text Source #

A lens onto the name of the `input` element associated with part of a multipart form upload.

partFileName :: Lens' Part (Maybe String) Source #

A lens onto the filename associated with part of a multipart form upload.

partContentType :: Traversal' Part (Maybe MimeType) Source #

A lens onto the content-type associated with part of a multipart form upload.

partGetBody :: Lens' Part (IO RequestBody) Source #

A lens onto the code that fetches the data associated with part of a multipart form upload.

# Parsing

atto :: Parser a -> Fold ByteString a Source #

Turn an attoparsec `Parser` into a `Fold`.

Both headers and bodies can contain complicated data that we may need to parse.

Example: when responding to an OPTIONS request, a server may return the list of verbs it supports in any order, up to and including changing the order on every request (which httpbin.org /actually does/!). To deal with this possibility, we parse the list, then sort it.

    >>> import Data.Attoparsec.ByteString.Char8 as A
    >>> import Data.List (sort)
    >>>
    >>> let comma = skipSpace >> "," >> skipSpace
    >>> let verbs = A.takeWhile isAlpha_ascii `sepBy` comma
    >>>
    >>> r <- options "http://httpbin.org/get"
    >>> r ^. responseHeader "Allow" . atto verbs . to sort
    ["GET","HEAD","OPTIONS"]

atto_ :: Parser a -> Fold ByteString a Source #

The same as `atto`, but ensures that the parser consumes the entire input.

Equivalent to:

    atto_ myParser = atto (myParser <* endOfInput)