úÎ9F5½1      !"#$%&'()*+,-./0None(RFC2616 sec 5.1.1 Method status code$whether server keeps connection opencontent lengthlist of header lines w/o CRLFlist of chunks,transfer-encoding/content-length informationchunked transferidentity w/ content lengthHTTP status codePMinimal socket input-stream abstraction w/ single pushback & consumed byte-countHThis abstraction is inspired by io-streams but is tuned for low-overhead@Return the time as the number of microseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).Note: this function returns 0 in case the underlying gettimeofday(2) call fails. See also ^Return the time as the number of seconds (with up to microsecond precision) since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).QThis is a faster implementation the code below useful for benchmarking purposes. zimport Data.Time.Clock.POSIX (getPOSIXTime) getPOSIXTimeSecs :: IO Double getPOSIXTimeSecs = fmap realToFrac getPOSIXTimeNote: this function returns NaN in case the underlying gettimeofday(2) call fails.1Internal debug tracing helperConvert an existing 2 into a Access underlying 2Access  counter id Each created 2 wrapper has an unique counter id value associated!Wrapper that creates TCP/IP IPv4  SocketStream and connects to 3 created with )If provided, the Maybe SockAddrJ argument allows to locally bind the socket to a specific source address. Read data from stream.<Note: Returns empty string on EOF. It's often better to use ! instead.! Version of   that throws" Version of  ) which does not consume the data returned That is,  ssPeek ss is semantically equivalent to -do { b <- ssRead ss; ssUnRead b ss; return b}." is idempotent, i.e. #ssPeek ss == ssPeek ss >> ssPeek ss#8May return empty string if no data has been buffered yet$Read exactly n bytes from  SocketStream*; throws exception if connection is closed%Push-back read data into &*Returns length of data consumed (i.e. w/o % data)'Write data out to socket (uses 4 internally)((Returns length of data written to stream5Used by )Construct IPv4 3*9Extract information from the header lines as returned by +7returns: (status-code, close-conn, Just content-length or Nothing (i.e. chunked))+#Receive/consume HTTP response from If no exception occured during + the J is left at the beginning of the (potentially empty) HTTP response body.,Receive full HTTP response-Receive single HTTP chunk.,Split HTTP URL into (hostname,port,url-path)/#Construct general HTTP/1.1 request.0Construct HTTP/1.1 GET request. See /( for constructing more general requests.67 meets 89Tag the : value of a ;< Alias for =>%Strip one trailing CR if there is one<RFC2616 sec 4.2 message-header (e.g. "Content-Type: text/plain"RFC2616 sec 14.3 host [ ":" port ] (e.g. "localhost:8001")RFC2616 sec 5.1.2  Request-URI (e.g. "pub index.html") ?1@A !"#$%&'(5)*+,-./if False sets Connection: close headeradditional HTTP request headersoptional request bodyRequest constructed as a B ready to be sent over the wire069<>CD1  !"#$%&'()*+,-./01 "#!$%'&(  /0,+*-).*   ?1@A !"#$%&'(5)*+,-./069<>CDE      !"#$%&'()*+,-./0123453463789:;<=;>?@;>A;>BC;DEFGHIJKLMNuhttpc-0.1.0.0Network.HTTP.MicroClient MsgHeaderHostPortReqURIMethodOPTIONSCONNECTTRACEDELETEPUTHEADPOSTGET HttpResponserespCode respKeepaliverespContentLen respHeader respContentTransferEncoding TeInvalid TeChunked TeIdentityHttpCode SockStreamgetPOSIXTimeUSecsgetPOSIXTimeSecs ssFromSocket ssToSocketssIdssClose ssConnectssReadssRead'ssPeek ssPeekBufssReadNssUnRead ssReadCntssWrite ssWriteCnt getSockAddrhttpHeaderGetInfosrecvHttpHeadersrecvHttpResponse recvChunksplitUrl mkHttp11ReqmkHttp11GetReqssDebugnetwork-2.5.0.0Network.Socket.TypesSocketSockAddrNetwork.Socket.ByteStringsendAll tcpProtoNumwhenJustbase Control.Monadwhen Data.MaybemaybenoteNothingMaybefIGHC.Real fromIntegralstripCR ssIdCountergetSsCounterIdbytestring-0.10.4.0Data.ByteString.Internal ByteString$fNFDataHttpResponse$fNFDataTransferEncoding