Ξυ³h&' †      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„… (c) 2009 Henning ThielemannBSD experimentalnon-portable (not tested) Safe-Inferred—†‡ˆ‰Š‹Œˆ1‰1Š1(c) 2009 Henning ThielemannBSD experimentalnon-portable (not tested) Safe-InferredXD http-monadΟInserts a header with the given name and value. Allows duplicate header names.E http-monadΕAdds the new header only if no previous header shares the same name.F http-monad(Removes old headers with duplicate name.G http-monadInserts multiple headers.H http-monad)Gets a list of headers with a particular :.J http-monadθLookup presence of specific Name in a list of Headers Returns the value from the first matching header. http-monadΖJoins consecutive lines where the second line begins with ' ' or 't'.Π6543210/.-,+*)('&%$#"!  987:;<=>?@ABCDEFGHIJKLMNOΠ987;<:6543210/.-,+*)('&%$#"!  C=>@ABDGEHFJKLMNO?I(c) Henning Thielemann, 2009BSDhttp@henning-thielemann.de experimentalnon-portable (not tested) Safe-Inferredƒ PTSRQUVWXYZ VUPTSRQWXYZ Safe-InferredΏ[\]^_`]\[^_` Safe-Inferredρabab  Safe-InferredŽ(c) 2009 Henning ThielemannBSD experimentalnon-portable (not tested) Safe-Inferredcdefgjhifgjhicde Safe-InferredΓoqprsturoqpstu Safe-Inferred†{ http-monadchunk size, only relevant for S. | http-monad&dictionary for read and write methods  http-monad chunk size yz{|yz{|(c) 2009 Henning ThielemannBSD experimentalnon-portable (not tested) Safe-Inferredύ  http-monadin contrast to built-in (,,)$, its mappend implementation is lazy http-monadδReceive and parse a HTTP request from the given Stream. Should be used for server side interactions.‘ http-monad!Reads and parses request headers.’ http-monad=Process request body (called after successful getRequestHead)‚ http-monadόVery simple function, send a HTTP response over the given stream. This could be improved on to use different transfer types.“ http-monad3Used when we know exactly how many bytes to expect.” http-monad£Used when nothing about data is known, Unfortunately waiting for a socket closure causes bad behaviour. Here we just take data once and give up the rest.• http-monad΅A necessary feature of HTTP/1.1 Also the only transfer variety likely to return any footers. Also the only transfer method for infinite data and the prefered one for generated data.– http-monadςMaybe in the future we will have a sensible thing to do here, at that time we might want to change the name.— http-monadΓRemove leading crlfs then call readTillEmpty2 (not required by RFC)˜ http-monadΎRead lines until an empty line (CRLF), also accepts a connection close as end of input, which is not an HTTP/1.1 compliant thing to do - so probably indicates an error condition.™ http-monadŸRead the next line and feed it to an action. If the read line ends with an exception, the subsequent action is not executed. Thus readLine is handled strictly.€‚€‚š                      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D EFGHIJKLMNOPQRSTUVWXYZ[G\]^_`abcde`aG]^_fghijklmnopqrstuvGwfgxyzt{fgxyz|}~€ ‚ ƒ „ … † ‡ ˆ‰ Š ‹ŒŽ‘’“”•–)http-monad-0.1.1.4-GE8beKKhSMNK2c6oCGvy91Network.Monad.HTTP.HeaderNetwork.Monad.TransferNetwork.Monad.ReaderNetwork.Monad.Transfer.IONetwork.Monad.BodyNetwork.Monad.Transfer.Offline#Network.Monad.Transfer.ChunkyLazyIONetwork.Monad.HTTPNetwork.Monad.ExceptionNetwork.Monad.Utility$HTTP-4000.4.1-ChsKypB1MAbLrRKkkz74PNNetwork.HTTP.HeadersHeader HdrCustomHdrContentTransferEncodingHdrLastModified HdrExpiresHdrETagHdrContentTypeHdrContentRange HdrContentMD5HdrContentLocationHdrContentLengthHdrContentLanguageHdrContentEncodingHdrContentBaseHdrAllowHdrWWWAuthenticate HdrWarningHdrVary HdrTrailerHdrTE HdrSetCookie HdrServer HdrRetryAfter HdrPublicHdrProxyAuthenticate HdrLocationHdrAge HdrUserAgent HdrRefererHdrRangeHdrProxyAuthorizationHdrMaxForwardsHdrIfUnmodifiedSince HdrIfRangeHdrIfNoneMatch HdrIfMatchHdrIfModifiedSinceHdrHostHdrFrom HdrExpect HdrCookieHdrAuthorizationHdrAcceptLanguageHdrAcceptEncodingHdrAcceptCharset HdrAcceptHdrVia HdrUpgradeHdrTransferEncoding HdrPragmaHdrDate HdrConnectionHdrCacheControl HeaderName setHeaders getHeaders HasHeadersNameTconsgetNamegetValue dictionarysetManygetMany modifyManyconsNameinsertinsertIfMissingreplace insertMany retrieveMany matchNamefindfindManylookupparse parseManyWarnparseManyStraightConsreadLine readBlock writeBlockAsyncExceptionalSyncExceptionalliftSync liftAsync liftIOSync liftIOAsynctransferrunCharTypefromChartoCharC fromStringtoString isLineTermisEmpty $fCByteString$fCByteString0$fC[]$fCharTypeCharBodysplitAt breakAfter withBuffer$fBodyByteString$fBodyByteString0$fBody[]lengthsendreceiverespond$fMonoidChunkedResponse$fSemigroupChunkedResponse$fShowChunkedResponseAsyncExceptionalTmapbindappendcontinueswitchswitchM joinExtendedcrlfspChunkedResponsegetRequestHeadprocessRequestlinearTransferhopefulTransferchunkedTransferuglyDeathTransferreadTillEmpty1readTillEmpty2readLineSwitch