-t      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  Safe-Inferredrequest method  status code None=ConnKey& consists of a hostname, a port and a Bool  specifying whether to use SSL. #Hostname or resolved host address. 0Keeps track of open connections for keep-alive. 'If possible, you should share a single ( between multiple threads and requests.  Since 0.1.0 Nothing' indicates that the manager is closed. CUsed to indicate to the reaper thread that it has some work to do. I This must be filled every time a connection is returned to the manager.  While redundant with the IORef# above, this allows us to have the E reaper thread fully blocked instead of running every 5 seconds when % there are no connections to manage. This is a per-ConnKey value.  Copied from " Settings for a Manager. Please use the defaultManagerSettings function and then modify 0 individual settings. For more information, see  +http://www.yesodweb.com/book/settings-types.  Since 0.1.0 CNumber of connections to a single host to keep alive. Default: 10.  Since 0.1.0 Create an insecure connection.  Since 0.1.0 Q FIXME in the future, combine managerTlsConnection and managerTlsProxyConnection YCreate a TLS connection. Default behavior: throw an exception that TLS is not supported.  Since 0.1.0 !_Create a TLS proxy connection. Default behavior: throw an exception that TLS is not supported.  Since 0.2.2 "EDefault timeout (in microseconds) to be applied to requests which do  not provide a timeout value. Default is 30 seconds  Since 0.1.0 #GExceptions for which we should retry our request if we were reusing an G already open connection. In the case of IOExceptions, for example, we J assume that the connection was closed on the server and therefore open a  new one.  Since 0.1.0 $$Action wrapped around all attempted Requests, usually used to wrap * up exceptions in library-specific types. Default: wrap all  IOException s in the InternalIOException constructor.  Since 0.1.0 %>Total number of idle connection to keep open at a given time. HThis limit helps deal with the case where you are making a large number J of connections to different hosts. Without this limit, you could run out  of file descriptors.  Default: 512  Since 0.3.7 ).A simple representation of the HTTP response.  Since 0.1.0 +Status code of the response.  Since 0.1.0 ,!HTTP version used by the server.  Since 0.1.0 -%Response headers sent by the server.  Since 0.1.0 ."Response body sent by the server.  Since 0.1.0 /@Cookies set on the client after interacting with the server. If ' cookies have been disabled by setting J to Nothing, then  this will always be empty.  Since 0.1.0 0BReleases any resource held by this response. If the response body C has not been fully read yet, doing so after this call will likely  be impossible.  Since 0.1.0 8KAll information on how to connect to a host and what should be sent in the  HTTP request. /If you simply wish to download from a URL, see parseUrl. KThe constructor for this data type is not exposed. Instead, you should use  either the + method to retrieve a default instance, or parseUrl to M construct from a URL, and then use the records below to make modifications. G This approach allows http-client to add configuration options without # breaking backwards compatibility. GFor example, to construct a POST request, you could do something like:  3 initReq <- parseUrl "http://www.example.com/path"  let req = initReq  { method = "POST"  } !For more information, please see   +http://www.yesodweb.com/book/settings-types.  Since 0.1.0 :#HTTP request method, eg GET, POST.  Since 0.1.0 ; Whether to use HTTPS (ie, SSL).  Since 0.1.0 <DRequested host name, used for both the IP address to connect to and  the host request header.  Since 0.1.0 =5The port to connect to. Also used for generating the host request header.  Since 0.1.0 >.Everything from the host to the query string.  Since 0.1.0 ?#Query string appended to the path.  Since 0.1.0 @Custom HTTP request headers GThe Content-Length and Transfer-Encoding headers are set automatically + by this module, and shall not be added to requestHeaders. If not provided by the user, Host$ will automatically be set based on  the host and port fields. CMoreover, the Accept-Encoding header is set implicitly to gzip for H convenience by default. This behaviour can be overridden if needed, by J setting the header explicitly to a different value. In order to omit the 6 Accept-Header altogether, set it to the empty string "". If you need an J empty Accept-Header (i.e. requesting the identity encoding), set it to a $ non-empty white-space string, e.g. " " . See RFC 2616 section 14.3 for J details about the semantics of the Accept-Header field. If you request a H content-encoding not supported by this module, you will have to decode  it yourself (see also the E field). ENote: Multiple header fields with the same field-name will result in 3 multiple header fields being sent and therefore it's the responsibility G of the client code to ensure that the rules from RFC 2616 section 4.2  are honoured.  Since 0.1.0 A'Request body to be sent to the server.  Since 0.1.0 BOptional HTTP proxy.  Since 0.1.0 CAOptional resolved host address. May not be used by all backends.  Since 0.1.0 DIf True, a chunked and/or gzipped body will not be  decoded. Use with caution.  Since 0.1.0 E4Predicate to specify whether gzipped data should be  decompressed on the fly (see alwaysDecompress and  browserDecompress). Argument is the mime type.  Default: browserDecompress.  Since 0.1.0 FEHow many redirects to follow when getting a resource. 0 means follow " no redirects. Default value: 10.  Since 0.1.0 GGCheck the status code. Note that this will run after all redirects are  performed. Default: return a StatusCodeException on non-2XX responses.  Since 0.1.0 H2Number of microseconds to wait for a response. If  Nothing', will wait indefinitely. Default: use  "# (which by default is 30 seconds).  Since 0.1.0 IDWraps the calls for getting new connections. This can be useful for G instituting some kind of timeouts. The first argument is the value of  responseTimeout3. Second argument is the exception to be thrown on  failure.  Default: If responseTimeout is Nothing, does nothing. Otherwise, 4 institutes timeout, and returns remaining time for responseTimeout.  Since 0.1.0 JA user-defined cookie jar.  If &, no cookie handling will take place, "Cookie" headers  in @ will be sent raw, and / will be  empty.  Since 0.1.0 K A function which will provide a M to a L. This L seemingly convoluted structure allows for creation of request bodies which 8 allocate scarce resources in an exception safe manner.  Since 0.1.0 L)A function which must be provided with a M.  Since 0.1.0 MKA function which generates successive chunks of a request body, provider a 9 single empty bytestring when no more data is available.  Since 0.1.0 NWhen using one of the P / O ( constructors, you must ensure that the K can be called multiple ( times. Usually this is not a problem. The O- will send a chunked request body. Note that ( not all servers support this. Only use O if you  know the server you'/re sending to supports chunked request bodies.  Since 0.1.0 T?Define a HTTP proxy, consisting of a hostname and port number. V!The host name of the HTTP proxy. W#The port number of the HTTP proxy. i Since 0.3 l Since 1.9.4 m Expected size/ actual size.  Since 1.9.4 qhost/port vhostportsecure whost/port }*Response containing unparseable redirect. ~List of encountered responses containing redirects in reverse chronological order; including last redirect, which triggered the exception and was not followed. If no more data, return empty. "Return data to be read next time. Send data to server An IOB action that represents an incoming response body coming from the E server. Data provided by this action has already been gunzipped and > de-chunked, and respects any content-length headers present. KThe action gets a single chunk of data from the response body, or an empty * bytestring if no more data is available.  Since 0.4.0  Since 1.9   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"      !"#$%&'()*+,-./0132457689:;<=>?@ABCDEFGHIJKLMNSRQPOTUVWXYZ[ \]^_`abcdefgh~}|{zyxwvutsrqponmlkjiNone1Keep dropping input until a blank line is found.  For testing input conn, output, input read write close host port  NoneNone Convert a URL into a 8. $This defaults some of the values in 8, such as setting : to  GET and @ to []. Since this function uses +, the return monad can be anything that is  an instance of  , such as  or .  Since 0.1.0 Add a ? to the request. If it is absolute (includes a host name), add  it as per 9; if it is relative, merge it with the existing request.  Extract a  from the request.  Since 0.1.0  Validate a , then add it to the request. Magic value to be placed in a 8$ to indicate that we should use the  timeout value in the Manager.  Since 1.9.3 'Always decompress a compressed stream. :Decompress a compressed stream unless the content-type is 'application/x-tar'. KAdd a Basic Auth header (with the specified user name and password) to the ' given Request. Ignore error handling:  9 applyBasicAuth "user" "pass" $ fromJust $ parseUrl url  Since 0.1.0 FAdd a proxy to the Request so that the Request when executed will use  the provided proxy.  Since 0.1.0 BAdd a Proxy-Authorization header (with the specified username and  password) to the given 8. Ignore error handling:  E applyBasicProxyAuth "user" "pass" <$> parseUrl "http://example.org"  Since 0.3.4 "Add url-encoded parameters to the 8. This sets a new A), adds a content-type request header and  changes the : to POST.  Since 0.1.0 %Set the query string to the given key/ value pairs.  Since 0.3.6 response headers  None A value for the managerRawConnection! setting, but also allows you to  modify the underlying Socket. to set additional settings. For a motivating  use case, see:  1https://github.com/snoyberg/http-client/issues/71.  Since 0.3.8 Default value for ManagerSettings. Note that this value does not have support for SSL/TLS. If you need to N make any https connections, please use the network-client-tls package, which  provides a tlsManagerSettings value.  Since 0.1.0 DAdd a new element to the list, up to the given maximum number. If we're ; already at the maximum, return the new value as leftover.  Create a . You may manually call  to shut it down,  or allow the Manager0 to be shut down automatically based on garbage  collection. Creating a new . is a relatively expensive operation, you are  advised to share a single  between requests instead. -The first argument to this function is often , @ though add-on libraries may provide a recommended replacement.  Since 0.1.0 +Collect and destroy any stale connections. Close all connections in a . Note that this doesn'*t affect currently in-flight connections, C meaning you can safely use it without hurting any queries you may  have concurrently running.  Since 0.1.0 Create, use and close a .  Since 0.2.1 !This function needs to acquire a ConnInfo- either from the Manager or  via I/O, and register it with the  ResourceT so it is guaranteed to be - either released or returned to the manager. ICreate an exception to be thrown if the connection for the given request  fails.    !"#$%  None?Get a single chunk of data from the response body, or an empty * bytestring if no more data is available.  Since 0.1.0 ?Strictly consume all remaining chunks of data from the stream.  Since 0.1.0 raw  NoneJIf a request is a redirection (status code 3xx) this function will create J a new request from the old request, the server headers returned with the E redirection, and the redirection code itself. This function returns  ' if the code is not a 3xx, there is no location header included, or if the  redirected response couldn't be parsed with . JIf a user of this library wants to know the url chain that results from a N specific request, that user has to re-implement the redirect-following logic 6 themselves. An example of that might look like this:  myHttp req man = do 2 (res, redirectRequests) <- (`runStateT` []) $  'httpRedirect'  9000  (\req' -> do 6 res <- http req'{redirectCount=0} man , modify (\rqs -> req' : rqs)  return (res, getRedirectedRequest req' (responseHeaders res) (responseCookieJar res) (W.statusCode (responseStatus res))  )  'lift'  req + applyCheckStatus (checkStatus req) res  return redirectRequests  Convert a ) that has a Source body to one with a lazy    body.  None 8This corresponds to the subcomponent algorithm entitled "Domain Matching" detailed  in section 5.1.3 8This corresponds to the subcomponent algorithm entitled "Paths" detailed  in section 5.1.4 8This corresponds to the subcomponent algorithm entitled " Path-Match" detailed  in section 5.1.4  8Are we configured to reject cookies for domains such as "com"? DThis corresponds to the eviction algorithm described in Section 5.3 " Storage Model" This applies the  to a given Request ;This corresponds to the algorithm described in Section 5.4 "The Cookie Header"  This applies  to a given Response ;This corresponds to the algorithm described in Section 5.3 " Storage Model" # This function consists of calling  followed by . 4 Use this function if you plan to do both in a row.   and 2 are only provided for more fine-grained control. SInsert a cookie created by generateCookie into the cookie jar (or not if it shouldn't be allowed in) /Turn a SetCookie into a Cookie, if it is valid   Input cookie jar Value that should be used as "now" Filtered cookie jar The request to insert into Current cookie jar Value that should be used as "now" C(Ouptut request, Updated cookie jar (last-access-time is updated)) Input request Current cookie jar Value that should be used as "now" .Whether or not this request is coming from an "http"/ source (not javascript or anything like that) (Contents of a "Cookie"; header, Updated cookie jar (last-access-time is updated)) Response received from server %Request which generated the response Value that should be used as "now" Current cookie jar Q(Updated cookie jar with cookies from the Response, The response stripped of any " Set-Cookie" header) The  the cookie jar is receiving :The request that originated the response that yielded the  Value that should be used as "now" .Whether or not this request is coming from an "http"/ source (not javascript or anything like that) Input cookie jar to modify Updated cookie jar The  the cookie jar is receiving Input cookie jar to modify .Whether or not this request is coming from an "http"/ source (not javascript or anything like that) Updated (or not) cookie jar The  we are encountering :The request that originated the response that yielded the  Value that should be used as "now" .Whether or not this request is coming from an "http"/ source (not javascript or anything like that) The optional output cookie    None Perform a Request, using a connection acquired from the given Manager,  and then provide the Response) to the given function. This function is N fully exception safe, guaranteeing that the response will be closed when the ) inner function exits. It is defined as:  I withResponse req man f = bracket (responseOpen req man) responseClose f KIt is recommended that you use this function in place of explicit calls to   and . 'You will need to use functions such as  to consume the response  body.  Since 0.1.0 A convenience wrapper around  which reads in the entire N response body and immediately closes the connection. Note that this function  performs fully strict I/3O, and only uses a lazy ByteString in its response K for memory efficiency. If you are anticipating a large response body, you  are encouraged to use  and  instead.  Since 0.1.0 A convenient wrapper around  which ignores the response D body. This is useful, for example, when performing a HEAD request.  Since 0.3.2 Get a )! without any redirect following. <The most low-level function for initiating an HTTP request. ?The first argument to this function gives a full specification = on the request: the host to connect to, whether to use SSL,  headers, etc. Please see 8 for full details. The ! second argument specifies which  should be used. This function then returns a ) with a  . The ) contains the status code 0 and headers that were sent back to us, and the  ) contains the body of the request. Note  that this  allows you to have fully = interleaved IO actions during your HTTP download, making it ? possible to download very large responses in constant memory. LAn important note: the response body returned by this function represents a M live HTTP connection. As such, if you do not use the response body, an open C socket will be retained indefinitely. You must be certain to call  ( on this response to free up resources. KThis function automatically performs any necessary redirects, as specified  by the F setting. DWhen implementing a (reverse) proxy using this function or relating  functions, it'6s wise to remove Transfer-Encoding:, Content-Length:, B Content-Encoding: and Accept-Encoding: from request and response  headers to be relayed.  Since 0.1.0 Apply  'Request'\'s G( and return resulting exception if any. Redirect loop 3Close any open resources associated with the given Response. In general, " this will either close an active  Connection or return it to the Manager  to be reused.  Since 0.1.0 F _function which performs a request and returns a response, and possibly another request if there's a redirect. None  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%h~}|{zyxwvutsrqponmlkji[\]^_`abcdefgXYZTUVWNSRQPOMLK89:;<=>?@ABCDEFGHIJ5764132)*+,-./0&'(  !"#$%  NoneNA datatype holding information on redirected requests and the final response.  Since 0.4.1 FRequests which resulted in a redirect, together with their responses. 9 The response contains the first 1024 bytes of the body.  Since 0.4.1 The final request performed.  Since 0.4.1 %The response from the final request.  Since 0.4.1  A variant of  responseOpen( which keeps a history of all redirects G performed in the interim, together with the first 1024 bytes of their  response bodies.  Since 0.4.1  A variant of  withResponse( which keeps a history of all redirects G performed in the interim, together with the first 1024 bytes of their  response bodies.  Since 0.4.1 y "#$%)+,-./8:;<=>?@ABEFGHJKLMNOPQRSTUVWX[\]^_`abcdefghijklmnopqrstuvwxyz{|}~͖ "#$% "#$%8:;<=>?@ABEFGHJ:;<=>?@ABEFGHJNSRQPOMLK)+,-./+,-./h~}|{zyxwvutsrqponmlkji[\]^_`abcdefgXTUVWNone&A single part of a multipart message. Name of the corresponding <input> )A file name, if this is an attached file  Content type List of additional headers #Action in m which returns the body  of a message. Make a  whose content is a strict . The 6 does not have a file name or content type associated  with it. Make a  whose content is a lazy  . The 6 does not have a file name or content type associated  with it. Make a  from a file. <The entire file will reside in memory at once. If you want  constant memory usage, use . The / supplied will be used as the file name of the  <. If you do not want to reveal this name to the server, you $ must remove it prior to uploading. The 2 does not have a content type associated with it.  Stream a  from a file. The / supplied will be used as the file name of the  <. If you do not want to reveal this name to the server, you $ must remove it prior to uploading. The 2 does not have a content type associated with it. ) will read a file and send it in chunks. 1Note that not all servers support this. Only use   if you know the server you'/re sending to supports chunked request bodies. The / supplied will be used as the file name of the  <. If you do not want to reveal this name to the server, you $ must remove it prior to uploading. The 2 does not have a content type associated with it.  Construct a  from form name, filepath and a N  ` partFileRequestBody "who_calls" "caller.json" $ RequestBodyBS "{\"caller\":\"Jason J Jason\"}"   -- empty upload form * partFileRequestBody "file" mempty mempty The 2 does not have a content type associated with it.  Construct a  from action returning the N  = partFileRequestBodyM "cat_photo" "haskell-the-cat.jpg" $ do U size <- fromInteger <$> withBinaryFile "haskell-the-cat.jpg" ReadMode hFileSize d return $ RequestBodySource size $ CB.sourceFile "haskell-the-cat.jpg" $= CL.map fromByteString The 2 does not have a content type associated with it. )Add a list of additional headers to this .  Combine the s to form multipart/form-data body JGenerate a boundary simillar to those generated by WebKit-based browsers. Add form data to the 8. This sets a new AE, adds a content-type request header and changes the method to POST. %Add form data with supplied boundary Name of the corresponding <input>. The body for this . Name of the corresponding <input>. The body for this . Name of the corresponding <input>. &The name of the local file to upload. Name of the corresponding <input>. &The name of the local file to upload. Name of the corresponding <input>. #File name to supply to the server. Data to upload. Name of the corresponding <input>. #File name to supply to the server. (Action that will supply data to upload. Boundary between parts. Boundary between parts.   !"#$%&'()*++,-./012344566789:;<=>?@ABCDDEFGHIJKLMNOPQRSTUVWXYZ[\]^__`abcdeefghijklmnopqrstuvwxyz{|}~                      !"#$%&'()http-client-0.4.2.1Network.HTTP.Client.InternalNetwork.HTTP.Client%Network.HTTP.Client.MultipartFormDataNetwork.HTTP.Client.UtilNetwork.HTTP.Client.TypesNetwork.HTTP.Client.ConnectionNetwork.HTTP.Client.HeadersNetwork.HTTP.Client.RequestNetwork.HTTP.Client.ManagerNetwork.HTTP.Client.BodyNetwork.HTTP.Client.ResponseNetwork.HTTP.Client.CookiesNetwork.HTTP.Client.Corebytestring-0.10.0.2Data.ByteString.Lazy fromStrictData.ByteStringhGetSome<>readDec hasNoBodyConnKeyConnHost HostAddressHostName NonEmptyListConsOneConnsMap ManagerOpen ManagerClosedManagermConns mConnsBaton mMaxConnsmResponseTimeoutmRawConnectionmTlsConnectionmTlsProxyConnectionmRetryableExceptionmWrapIOExceptionmIdleConnectionCountManagerSettingsmanagerConnCountmanagerRawConnectionmanagerTlsConnectionmanagerTlsProxyConnectionmanagerResponseTimeoutmanagerRetryableExceptionmanagerWrapIOExceptionmanagerIdleConnectionCount ResponseCloserunResponseCloseResponseresponseStatusresponseVersionresponseHeaders responseBodyresponseCookieJarresponseClose' ManagedConnReusedFresh ConnRelease ConnReuse DontReuseReuseRequestmethodsecurehostportpath queryStringrequestHeaders requestBodyproxy hostAddressrawBody decompress redirectCount checkStatusresponseTimeoutgetConnectionWrapper cookieJar GivesPopper NeedsPopperPopper RequestBodyRequestBodyStreamChunkedRequestBodyStreamRequestBodyBuilder RequestBodyBSRequestBodyLBSProxy proxyHost proxyPort CookieJarCJexposeCookie cookie_name cookie_valuecookie_expiry_time cookie_domain cookie_pathcookie_creation_timecookie_last_access_timecookie_persistentcookie_host_onlycookie_secure_onlycookie_http_only HttpExceptionHttpZlibExceptionInvalidDestinationHostIncompleteHeadersInvalidChunkHeadersResponseBodyTooShortTlsNotSupported TlsExceptionNoResponseDataReceivedProxyConnectExceptionInternalIOException InvalidHeaderInvalidStatusLineExpectedBlankAfter100ContinueFailedConnectionException2FailedConnectionExceptionResponseTimeoutOverlongHeadersHandshakeFailedHttpParserExceptionTooManyRetriesUnparseableRedirectTooManyRedirectsInvalidUrlExceptionStatusCodeException StatusHeaders ConnectionconnectionReadconnectionUnreadconnectionWriteconnectionClose BodyReaderconnectionReadLineconnectionDropTillBlankLineconnectionReadLineWithdummyConnectionmakeConnectionopenSocketConnectionparseStatusHeadersparseUrlsetUriRelativegetUrisetUriuseDefaultTimeoutalwaysDecompressbrowserDecompressapplyBasicAuthaddProxyapplyBasicProxyAuthurlEncodedBody needsGunziprequestBuildersetQueryStringrawConnectionModifySocketdefaultManagerSettings newManager closeManager withManagerfailedConnectionExceptiongetConnbrRead brReadSomebrEmpty brAddCleanup brConsumemakeGzipReadermakeUnlimitedReadermakeLengthReadermakeChunkedReadergetRedirectedRequest lbsResponse getResponse isIpAddress domainMatches defaultPath pathMatchescreateCookieJardestroyCookieJar!removeExistingCookieFromCookieJarevictExpiredCookiesinsertCookiesIntoRequestcomputeCookieStringupdateCookieJarreceiveSetCookieinsertCheckedCookiegenerateCookie withResponsehttpLbs httpNoBodyhttpRaw responseOpenapplyCheckStatus httpRedirect responseCloseHistoriedResponse hrRedirectshrFinalRequesthrFinalResponseresponseOpenHistorywithResponseHistoryPartpartName partFilenamepartContentType partHeaders partGetBodypartBSpartLBSpartFilepartFileSourcepartFileSourceChunkedpartFileRequestBodypartFileRequestBodyMaddPartHeaders renderPart renderPartswebkitBoundarywebkitBoundaryPure formDataBodyformDataBodyWithBoundarydata-default-class-0.0.1Data.Default.Classdefbase Data.MaybeNothing$fMonoidCookieJarsimplifybuilderToStream$fEqResponseClose$fShowResponseClose$fMonoidRequestBody $fEqCookieJar$fDefaultCookieJar $fOrdCookie $fEqCookie$fExceptionHttpExceptioncharLFcharCRkillCRsocketConnectionfirstSuccessful charSpace charColon charPeriodexceptions-0.6.1Control.Monad.Catch MonadThrowghc-prim GHC.TypesIOMaybenetwork-uri-2.6.0.1 Network.URIURI$fIsStringRequest$fDefaultRequest $fShowRequest addToListreapgetManagedConn takeSocket putSocketneToList neFromList closeManager' safeConnClose nonEmptyMapM_ getConnDestData.ByteString.Lazy.Internal ByteStringrejectPublicSuffixesslashinsertIntoCookieJarisPublicSuffixcookie-0.4.1.4 Web.Cookie SetCookieData.ByteString.InternalGHC.IOFilePath streamFilecp $fShowPart