h$m2e+      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None#$5  None(c) 2014 Bryan O'Sullivan BSD-stylebos@serpentine.com experimentalGHCNone  #$'(359> wreqA session that spans multiple requests. This is responsible for cookie management and TCP connection reuse.wreqA function that runs a request and returns the associated response.wreq(A request that is ready to be submitted.wreqAn element of a Link header.wreqThe error type used by   and  ; if a failure occurs when parsing a response body as JSON.wreqA key/value pair for an !application/x-www-form-urlencoded POST request body.wreqA 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  type.The instances for  , strict  , and lazy   7 are all encoded using UTF-8 before being URL-encoded.The instance for  gives an empty string on 4, and otherwise uses the contained type's instance.wreqRender the given value. wreq;A product type for representing more complex payload types."wreq8A type that can be converted into a PUT request payload.#wreqRepresent a value in the request body (and perhaps the headers) of a PUT request.$wreq9A type that can be converted into a POST request payload.'wreqAWS request signing version 4(wreqSupported 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.)wreqBasic authentication. This consists of a plain username and password.*wreqAn OAuth2 bearer token. This is treated by many services as the equivalent of a username and password.+wreqA 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.,wreqAmazon Web Services request signing AWSAuthVersion key secret (optional: session-token)-wreqAmazon Web Services request signing AWSAuthVersion key secret Maybe (service, region).wreqOAuth1 request signing OAuth1 consumerToken consumerSecret token secret/wreqA function that checks the result of a HTTP request and potentially returns an exception.0wreq!Options for configuring a client.2wreqEither configuration for a , or an actual .If only & are provided, then by default a new " will be created for each request.Note#: when issuing HTTP requests using 0-based functions from the the Network.Wreq.Session module ( , %, etc.), this field will be ignored.'An example of using a specific manager: import Network.HTTP.Client ()  $ \mgr -> do let opts =  { 2 = Right mgr }   opts "http://httpbin.org/get" ;An example of changing settings (this will use a separate  for every request, so make sense only if you're issuing a tiny handful of requets): import Network.HTTP.Client () let settings = % { managerConnCount = 5 } opts =  { 2 = Left settings }   opts "http://httpbin.org/get" 3wreq.Host name and port for a proxy to use, if any.4wreqAuthentication information.Example (note the use of TLS):  let opts =  { 4 =  "user" "pass" }  2 opts "https://httpbin.org/basic-auth/user/pass" 5wreq-Additional headers to send with each request.  let opts =  { 5 = [("Accept", "*/*")] }   opts "http://httpbin.org/get" 6wreqKey-value pairs to assemble into a query string to add to the end of a URL.For example, given:  let opts = 7 { params = [("sort", "ascending"), ("key", "name")] }   opts "http://httpbin.org/get" %This will generate a URL of the form: .http://httpbin.org/get?sort=ascending&key=name7wreqThe maximum number of HTTP redirects to follow before giving up and throwing an exception.In this example, a  will be thrown with a  constructor, because the maximum number of redirects allowed will be exceeded:  let opts =  { 7 = 3 }  ' opts "http://httpbin.org/redirect/5" 8wreq%Cookies to set when issuing requests.Note#: when issuing HTTP requests using 0-based functions from the the Network.Wreq.Session module ( , /, etc.), this field will be used only for the first% HTTP request to be issued during a . Any changes changes made for subsequent requests will be ignored.9wreqFunction that checks the status code and potentially returns an exception.This defaults to &, which will just use the default of  which throws a StatusException if the status is not 2XX.:wreqA MIME content type, e.g. "application/octet-stream".;wreq)Return the URL associated with the given .This includes the port number if not standard, and the query string if one exists.: !"#$%&'(.)*+,-/0143927568:;3NoneNonewreq;Set a header to the given value, replacing any prior value.wreqSet a header to the given value, but only if the header was not already set.<None (c) 2014 Bryan O'Sullivan BSD-stylebos@serpentine.com experimentalGHCNone >( !"#$%&'(.)*+,-/0143927568:;(0143927568(.)*+,-&'/ !$%"#:;None None ?!5 0(c) 2014 Bryan O'Sullivan BSD-stylebos@serpentine.com experimentalGHCNone9(-hwreqA 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 ( ) import Network.HTTP.Client.OpenSSL let opts =   h   Left (!" ) !# $  ! opts "https://httpbin.org/get" In this example, we also set the response timeout to 10000 microseconds: import OpenSSL.Session ( ) import Network.HTTP.Client.OpenSSL import Network.HTTP.Client (, $) let opts =   h   Left (!" )  h   Left ( { $# = responseTimeoutMicro 10000 } ) !# $  ! opts "https://httpbin.org/get" iwreq A lens onto proxy configuration.Example:  let opts =   i % & "localhost" 8000   opts "http://httpbin.org/get" Note here the use of the % setter to turn a  into a  3, to make the type of the RHS compatible with the '( lens.jwreq#A lens onto request authentication.Example (note the use of TLS):  let opts =   ') %  "user" "pass"  2 opts "https://httpbin.org/basic-auth/user/pass" kwreqA lens onto all headers with the given name (there can legitimately be zero or more).Example:  let opts =   k "Accept"   ["*/*"]   opts "http://httpbin.org/get" lwreqA 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 ( * l) mwreqA 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 =   m "foo"   ["bar", "quux"]   opts "http://httpbin.org/get" nwreq!A lens onto all query parameters.owreqA lens onto the maximum number of redirects that will be followed before an exception is thrown.In this example, a  will be thrown with a  constructor, because the maximum number of redirects allowed will be exceeded.  let opts =   o   3  ' opts "http://httpbin.org/redirect/5" pwreq0A lens to get the optional status check functionqwreq?A traversal onto the cookie with the given name, if one exists.N.B. This is an "illegal" : we can change the s of the associated = so that it differs from the name provided to this function.rwreqA lens onto all cookies.swreq!A lens onto the name of a cookie.twreq"A lens onto the value of a cookie.uwreq(A lens onto the expiry time of a cookie.vwreq#A lens onto the domain of a cookie.wwreq!A lens onto the path of a cookie.xwreq*A lens onto the creation time of a cookie.ywreq-A lens onto the last access time of a cookie.zwreqA lens onto whether a cookie is persistent across sessions (also known as a "tracking cookie").{wreq*A lens onto whether a cookie is host-only.|wreqA lens onto whether a cookie is secure-only, such that it will only be used over TLS.}wreq,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.~wreq:A lens onto the hostname portion of a proxy configuration.wreq9A lens onto the TCP port number of a proxy configuration.wreq+A lens onto the status of an HTTP response.wreq,A lens onto the version of an HTTP response.wreq;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 <- +# "http://httpbin.org/get" print (r *  "Content-Type") 1To access at most one header (the result will be " if there is no match), use the (, ) operator. r <- +# "http://httpbin.org/get" print (r ,  "Content-Transfer-Encoding") 9To access all (zero or more) matching headers, use the (- ) operator. r <- +# "http://httpbin.org/get" print (r -  "Set-Cookie") wreq,A lens onto all headers in an HTTP response.wreq A fold over Link5 headers, matching on both parameter name and value.For example, here is a Link* header returned by the GitHub search API. Link: ; rel="next", ; rel="last">And here is an example of how we can retrieve the URL for the next link programatically. r <- + "https://api.github.com/search/code?q=addClass+user:mozilla" print (r ,  "rel" "next" . ) wreq#A lens onto the body of a response. r <- +# "http://httpbin.org/get" print (r * ) wreq2A fold over any cookies that match the given name. r <- +$ "http://www.nytimes.com/" print (r , responseCookie "RMID") wreq,A lens onto all cookies set in the response.wreq6A lens onto the final request of a historied response.wreq7A lens onto the final response of a historied response.wreq:A lens onto the list of redirects of a historied response.wreq5A lens onto the numeric identifier of an HTTP status.wreq6A lens onto the textual description of an HTTP status.wreq!A lens onto the URL portion of a Link element.wreq A lens onto the parameters of a Link element.wreqA lens onto the name of the  input: element associated with part of a multipart form upload.wreqA lens onto the filename associated with part of a multipart form upload.wreqA lens onto the content-type associated with part of a multipart form upload.wreqA lens onto the code that fetches the data associated with part of a multipart form upload.wreqTurn an attoparsec  into a .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 Aimport Data.List (sort))let comma = skipSpace >> "," >> skipSpace3let verbs = A.takeWhile isAlpha_ascii `sepBy` comma%r <- options "http://httpbin.org/get"2r ^. responseHeader "Allow" . atto verbs . to sort["GET","HEAD","OPTIONS"]wreq The same as 9, but ensures that the parser consumes the entire input.Equivalent to:  myParser =  (myParser  ) wreqHeader name to match.wreqParameter name to match.wreqParameter value to match.wreqName of cookie to match.6 /0hijklmnopqrstuvwxyz{|}~60hijkmolnqr/p~stuvwxyz{|}  None #$358?9. Safe-Inferred:/None '(:I(c) 2014 Bryan O'Sullivan BSD-stylebos@serpentine.com experimentalGHCNone ?[= wreqIssue a GET request.Example:  "http://httpbin.org/get" !r <- get "http://httpbin.org/get" r ^. responseStatus . statusCode200wreq(Issue a GET request, using the supplied 0.Example:  let opts =   m "foo"  ["bar"]  opts "http://httpbin.org/get" ,let opts = defaults & param "foo" .~ ["bar"]*r <- getWith opts "http://httpbin.org/get"r ^? responseBody . key "url".Just (String "http://httpbin.org/get?foo=bar")wreqIssue a POST request.Example:  "http://httpbin.org/post" ( [1,2,3]) 4r <- post "http://httpbin.org/post" (toJSON [1,2,3])&r ^? responseBody . key "json" . nth 2Just (Number 3.0)wreq)Issue a POST request, using the supplied 0.Example:  let opts =   m "foo"  ["bar"] ! opts "http://httpbin.org/post" ( [1,2,3]) ,let opts = defaults & param "foo" .~ ["bar"]=r <- postWith opts "http://httpbin.org/post" (toJSON [1,2,3])r ^? responseBody . key "url"/Just (String "http://httpbin.org/post?foo=bar")wreqIssue a HEAD request.Example:  "http://httpbin.org/get" #r <- head_ "http://httpbin.org/get""r ^? responseHeader "Content-Type"Just "application/json"wreq)Issue a HEAD request, using the supplied 0.Example:  let opts =   m "foo"  ["bar"]  opts "http://httpbin.org/get" ,let opts = defaults & param "foo" .~ ["bar"]+r <- headWith opts "http://httpbin.org/get" r ^? responseHeader "Connection"Just "keep-alive"wreqIssue a PUT request.wreq(Issue a PUT request, using the supplied 0.wreqIssue an OPTIONS request.Example:  "http://httpbin.org/get" See # for a more complex worked example.wreq-Issue an OPTIONS request, using the supplied 0.Example:  let opts =   m "foo"  ["bar"]  opts "http://httpbin.org/get" wreqIssue a DELETE request.Example:  "http://httpbin.org/delete" 'r <- delete "http://httpbin.org/delete" r ^. responseStatus . statusCode200wreq+Issue a DELETE request, using the supplied 0.Example:  let opts =   o  0 # opts "http://httpbin.org/delete" $let opts = defaults & redirects .~ 00r <- deleteWith opts "http://httpbin.org/delete" r ^. responseStatus . statusCode200wreqIssue a custom-method requestExample: $ "PATCH" "http://httpbin.org/patch" 4r <- customMethod "PATCH" "http://httpbin.org/patch" r ^. responseStatus . statusCode200wreq:Issue a custom request method request, using the supplied 0.Example:  let opts =   o  0 * "PATCH" opts "http://httpbin.org/patch" $let opts = defaults & redirects .~ 0=r <- customMethodWith "PATCH" opts "http://httpbin.org/patch" r ^. responseStatus . statusCode200wreqIssue a custom request method. Keep track of redirects and return the Example: ' "GET" "http://httpbin.org/redirect/3" r <- customHistoriedMethod "GET" "http://httpbin.org/redirect/3"length (r ^. hrRedirects)3wreq:Issue a custom request method request, using the supplied 0*. Keep track of redirects and return the .wreq,Issue a custom-method request with a payloadwreqIssue a custom-method request with a payload, using the supplied 0.wreq6Issue a custom-method historied request with a payloadwreqIssue a custom-method historied request with a paylod, using the supplied 0.wreqConvert the body of an HTTP response from JSON to a suitable Haskell type.In this example, we use  in the IO monad, where it will throw a 4 exception if conversion to the desired type fails. ' {-# LANGUAGE DeriveGeneric #-} import  GHC.Generics (01) {- This Haskell type corresponds to the structure of a response body from httpbin.org. -} data GetBody = GetBody { headers :: 23   , args :: 23   , origin ::  , url ::  } deriving (Show, 01) -- Get GHC to derive a  instance for us. instance  GetBody {- The fact that we want a GetBody below will be inferred by our use of the "headers" accessor function. -} foo = do r <-  =<< . "http://httpbin.org/get" print (headers (r *  responseBody))  If we use  in the  monad, it will return  with a " payload if conversion fails, and  with a   whose  responseBody# is the converted value on success.wreq4Convert the body of an HTTP response from JSON to a Value.In this example, we use  in the IO monad, where it will throw a  exception if the conversion to Value fails. foo = do r <-  =<< % "http://httpbin.org/get" print (r ,  responseBody& . key "headers" . key "User-Agent") wreqBasic authentication. This consists of a plain username and password.Example (note the use of TLS):  let opts =   j ?~  "user" "pass" 2 opts "https://httpbin.org/basic-auth/user/pass" Note here the use of the % setter to turn an ( into a  (3, to make the type of the RHS compatible with the j lens.5let opts = defaults & auth ?~ basicAuth "user" "pass".wreqThe body for this .wreq"Name of the corresponding .wreqThe body for this .  !&'(0hijklmnopqrstuvw0hkmolnqrp(&'ji !  stuvw(c) 2014 Bryan O'Sullivan BSD-stylebos@serpentine.com experimentalGHCNone#$dwreq Create a *, passing it to the given function. The 5 will no longer be valid after that function returns.This session manages cookies and uses default session manager configuration.wreq Create a .This session manages cookies and uses default session manager configuration.wreqCreate a session.This uses the default session manager settings, but does not manage cookies. It is intended for use with REST-like HTTP-based APIs, which typically do not use cookies.wreqCreate a session.This uses the default session manager settings, but does not manage cookies. It is intended for use with REST-like HTTP-based APIs, which typically do not use cookies.wreqCreate a session, using the given manager settings. This session manages cookies.wreqCreate a session, using the given cookie jar and manager settings.wreqCreate a session, using the given cookie jar and manager settings.wreqExtract current 4 from a wreq-specific version of +.wreq-specific version of 5.wreq-specific version of 6.wreq-specific version of 7.wreq-specific version of 8.wreq-specific version of 9.wreq-specific version of :.wreq-specific version of  .wreq-specific version of ;.wreq-specific version of <.wreq-specific version of =.wreq-specific version of .wreq-specific version of >.wreq-specific version of ?.wreq-specific version of @.wreq-specific version of A.wreq-specific version of B.wreqIf 7 is specified, no cookie management will be performed.wreqIf 7 is specified, no cookie management will be performed.<<CDECDFCDGCDHCDICJCKLCKMCKMCKNOPQRSTU9VWXYZ[[\]^^_`abcdefghijklmnopqrsst()uvwxyz{|}~t()uvwyx\]/+ 5;6<87=9>:?@AB  &+56789: ;<=>?@AB CKCKCK|Zy(CD)yxutv(w]\........///////////////// "wreq-0.5.3.3-E8ZwijQE2PLZcQiSxOof5 Network.WreqNetwork.Wreq.LensNetwork.Wreq.Cache.StoreNetwork.Wreq.SessionNetwork.Wreq.TypesNetwork.Wreq.CacheNetwork.Wreq.Internal.OAuth1Network.Wreq.Internal.TypesasJSONasValueData.Text.LazyTextgetWithputWithNetwork.HTTP.Client withManagerdefaultsdefaultManagerSettings basicAuth HttpExceptionTooManyRedirectsSessionNetwork.Wreq.Lens.MachineryNetwork.Wreq.Internal.LensNetwork.Wreq.Internal.AWSNetwork.Wreq.Internal.LinkNetwork.Wreq.Lens.THOpenSSL.Sessioncontext Control.Lens&.~Network.HTTP.Client.OpenSSLopensslManagerSettings withOpenSSLmanagerResponseTimeout?~ httpProxyLensproxyauth^.get^?^.. Paths_wreqNetwork.Wreq.Internal GHC.GenericsGenericData.MapMap CookieJarposthead_optionsputdelete customMethodpostWithheadWith optionsWith deleteWithcustomMethodWithcustomHistoriedMethodWithcustomPayloadMethodWith customHistoriedPayloadMethodWith(http-client-0.7.5-DKHHdoXUmm0H7bTD3fL9Y0%Network.HTTP.Client.MultipartFormDatapartFileSourcepartFilepartLBSpartBSPartHistoriedResponseNetwork.HTTP.Client.TypesCookieProxyResponse(http-types-0.12.3-LMMV4F9OuE2BJ0myUSAImxNetwork.HTTP.Types.StatusStatusStoreemptyinsertlookupfromListtoList $fShowStoreRunReqLinklinkURL linkParams JSONError FormParam:= FormValuerenderFormValuePayloadRawPutable putPayloadPostable postPayloadAWSAuthVersionAWSv4Auth BasicAuth OAuth2Bearer OAuth2TokenAWSAuth AWSFullAuthOAuth1ResponseCheckerOptionsmanagerheadersparams redirectscookies checkResponse ContentTypereqURLseshRun$fFormValueMaybe $fFormValue()$fFormValueDouble$fFormValueFloat$fFormValueWord64$fFormValueWord32$fFormValueWord16$fFormValueWord8$fFormValueWord$fFormValueInteger$fFormValueInt64$fFormValueInt32$fFormValueInt16$fFormValueInt8$fFormValueInt$fFormValueByteString$fFormValueByteString0 $fFormValue[]$fFormValueBuilder$fFormValueText$fFormValueText0$fPutableEncoding'$fPutableValue$fPutableByteString$fPutableByteString0$fPutablePayload$fPutableFormParam $fPutable[] $fPutable(,) $fPutable[]0 $fPutable[]1$fPutablePartM$fPostableEncoding'$fPostableValue$fPostableByteString$fPostableByteString0$fPostablePayload$fPostableFormParam $fPostable[] $fPostable(,) $fPostable[]0 $fPostable[]1$fPostablePartMheaderparamcookie cookieName cookieValuecookieExpiryTime cookieDomain cookiePathcookieCreationTimecookieLastAccessTimecookiePersistentcookieHostOnlycookieSecureOnlycookieHttpOnly proxyHost proxyPortresponseStatusresponseVersionresponseHeaderresponseHeaders responseLink responseBodyresponseCookieresponseCookieJarhrFinalRequesthrFinalResponse hrRedirects statusCode statusMessagepartName partFileNamepartContentType partGetBodyattoatto_ cacheStore validateEntry shouldCache$fHashableCacheResponse$fEqCacheResponse$fShowCacheResponse$fFunctorCacheResponse$fGenericCacheResponsecustomHistoriedMethodcustomPayloadMethodcustomHistoriedPayloadMethodfoldGet foldGetWith oauth1Auth oauth2Bearer oauth2TokenawsAuthawsSessionTokenAuth awsFullAuthpartText partString withSession newSessionwithAPISession newAPISessionwithSessionWithwithSessionControlnewSessionControlgetSessionCookieJar signRequestbaseGHC.BaseString text-1.2.3.2Data.Text.Internal GHC.MaybeMaybeNothingManagerManagerSettingsRequestBodyNoBody StringBody ReaderBody CacheEntry entryCreated entryExpires entryResponse seshCookies seshManagerseshRunHistory RunHistoryMgr fieldName makeLenses toCamelCase setHeadermaybeSetHeader cookieJar decompresshost hostAddressmethodonRequestBodyExceptionpathport queryStringrawBody redirectCount requestBodyrequestHeadersrequestManagerOverriderequestVersionresponseTimeoutsecureassocassoc2 deleteKeysignRequestFulllinksPartMresponseClose' partFilename partHeaders"lens-4.19.2-JWTdDP4QE6QLVEHhpppoR9Control.Lens.Type Traversal'*attoparsec-0.13.2.4-JRid9zEiLev1OUHUDdftfY#Data.Attoparsec.ByteString.InternalParserFold<*Data.Attoparsec.Internal endOfInputversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameemptyMethodWithignoreResponse readResponsefoldResponseBodyrequest prepareGetrunReadrunReadHistory preparePost prepareMethodpreparePayloadMethod prepareHead runIgnoreprepareOptions preparePut prepareDelete Data.FunctionControl.Lens.Setter$aeson-1.5.5.1-IDWNStMTDpqFucm7bvk81PData.Aeson.Types.ToJSONtoJSONData.Aeson.Types.FromJSONFromJSON Data.EitherEitherLeftRight