-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Haskell Web Library
--   
--   The library includes attoparsec based incremental parsers for rfc2616
--   (http) and rfc3986 (uri), rfc2045-46 (mime). The package name will
--   subject to change due to broad range of rfc coverage.
@package hweblib
@version 0.6.3

module Network.Http


-- | Augmented BNF for Syntax Specifications: ABNF
--   <a>http://www.ietf.org/rfc/rfc2234.txt</a>
module Network.Parser.Rfc2234
vcharPred :: Word8 -> Bool
spPred :: Word8 -> Bool
lfPred :: Word8 -> Bool
htPred :: Word8 -> Bool
hexdigPred :: Word8 -> Bool
digitPred :: Word8 -> Bool
dquotePred :: Word8 -> Bool
ctlPred :: Word8 -> Bool
charPred :: Word8 -> Bool
upalphaPred :: Word8 -> Bool
loalphaPred :: Word8 -> Bool
alphaPred :: Word8 -> Bool
bitPred :: Word8 -> Bool

-- | Parse a Space or Horizontal Tab
wsp :: Parser Word8

-- | Parse a Visible Character
vchar :: Parser Word8

-- | Parse a Space
sp :: Parser Word8

-- | Parse an Octet
octet :: Parser Word8

-- | Parse a Lightweight Space
lwsp :: Parser [Word8]

-- | Parse a LineFeed
lf :: Parser Word8

-- | Parse a Horizontal Tab
ht :: Parser Word8

-- | Parse a hex digit
hexdig :: Parser Word8

-- | Parse a digit
digit :: Parser Word8

-- | Parse a double quote
dquote :: Parser Word8

-- | Parse an ascii control character
ctl :: Parser Word8

-- | Parse CRLF
crlf :: Parser Word8

-- | Parse CR
cr :: Parser Word8

-- | Parse a character
char :: Parser Word8

-- | Parse a Bit
bit :: Parser Word8

-- | Parse an uppercase alpha
upalpha :: Parser Word8

-- | Parse a lowercase alpha
loalpha :: Parser Word8

-- | Parse an alpha
alpha :: Parser Word8

-- | Match a parser at least <tt>N</tt> times.
manyN :: Int -> Parser a -> Parser [a]

-- | Match a parser at least <tt>N</tt> times, but no more than <tt>M</tt>
--   times.
manyNtoM :: Int -> Int -> Parser a -> Parser [a]


-- | This module provides common parsers used in rfc specifications.
module Network.Parser.RfcCommon

-- | Common Parsers
--   
--   Parse at least one hex digit.
hex :: Parser [Word8]

-- | Parse lws and return space
lws :: Parser Word8

-- | consecutive matches of lws rule, where they MUST be compressed to a
--   single 0x20 byte
lwss :: Parser Word8

-- | Parse a character but not a control or parenthesis
ctext :: Parser Word8

-- | Parse a character but not a control character or double quote
qdtext :: Parser Word8

-- | Parse quoted pair
quotedPair :: Parser [Word8]

-- | Parse quoted string
quotedString :: Parser [Word8]

-- | Parse a character but not a control character.
text :: Parser Word8

-- | Utilities
appcon :: [a] -> [[a]] -> [a]

-- | return a word inside a list
word8l :: Word8 -> Parser ByteString [Word8]

-- | Convert a ByteString Word to ByteString Char
toRepr :: [Word8] -> [Char]
asList :: Parser a -> Parser [a]


-- | Internet Message Format <a>http://www.ietf.org/rfc/rfc2822.txt</a>
module Network.Parser.Rfc2822

-- | <ul>
--   <li>3.2.1. Primitive Tokens</li>
--   </ul>
no_ws_ctlPred :: Word8 -> Bool
no_ws_ctl :: Parser Word8

-- | Parse a text element and return corresponding Word8
text :: Parser Word8
specialsPred :: Word8 -> Bool

-- | Parse a special
specials :: Parser Word8

-- | <ul>
--   <li>3.2.3. Folding white space and comments</li>
--   </ul>
--   
--   Parse Whitespaces
wsps :: Parser [Word8]

-- | Parse Folding Whitespace
fws :: Parser [Word8]

-- | Parse ctext
ctext :: Parser Word8

-- | Parse a comment
comment :: Parser [Word8]
cfws :: Parser ByteString [Word8]

-- | <ul>
--   <li>3.2.4. Atom</li>
--   </ul>
atextPred :: Word8 -> Bool
atext :: Parser Word8
atom :: Parser [Word8]
dot_atom_text :: Parser [Word8]
dot_atom :: Parser [Word8]

-- | <ul>
--   <li>3.2.5. Quoted strings</li>
--   </ul>
qtextPred :: Word8 -> Bool
qtext :: Parser Word8
qcontent :: Parser ByteString [Word8]
quoted_string :: Parser ByteString [Word8]

-- | <ul>
--   <li>3.2.6. Miscellaneous tokens</li>
--   </ul>
word :: Parser ByteString [Word8]
phrase :: Parser [[Word8]]
utext :: Parser ByteString Word8

-- | <ul>
--   <li>3.4. Address Specification</li>
--   </ul>
address :: Parser [NameAddress]
mailbox :: Parser NameAddress
name_addr :: Parser NameAddress
angle_addr :: Parser [Word8]
group :: Parser [NameAddress]
display_name :: Parser ByteString [Word8]
mailbox_list :: Parser ByteString [NameAddress]
address_list :: Parser ByteString [[NameAddress]]
addr_spec :: Parser [Word8]
local_part :: Parser ByteString [Word8]
domain :: Parser ByteString [Word8]
domain_literal :: Parser ByteString [Word8]
dcontent :: Parser ByteString [Word8]
dtextPred :: Word8 -> Bool
dtext :: Parser Word8

-- | <ul>
--   <li>3.6.4. Identification fields</li>
--   </ul>
message_id :: Parser ByteString [Word8]
msg_id :: Parser ByteString [Word8]
id_left :: Parser [Word8]
id_right :: Parser [Word8]
no_fold_quote :: Parser ByteString [Word8]
no_fold_literal :: Parser ByteString [Word8]
data NameAddress
NameAddress :: Maybe ByteString -> ByteString -> NameAddress
[naName] :: NameAddress -> Maybe ByteString
[naAddr] :: NameAddress -> ByteString
instance GHC.Show.Show Network.Parser.Rfc2822.NameAddress
instance GHC.Classes.Eq Network.Parser.Rfc2822.NameAddress


-- | Multipurpose Internet Mail Extensions (MIME) Part One: Format of
--   Internet Message Bodies <a>http://www.ietf.org/rfc/rfc2045.txt</a>
module Network.Parser.Rfc2045
mimePartHeaders :: Parser [Header]
entityHeaders :: Parser [Header]
entityHeader :: Parser Header
version :: Parser Header
ietfToken :: Parser ByteString
ianaToken :: Parser ByteString
tspecialsPred :: Word8 -> Bool
tspecials :: Parser Word8
tokenPred :: Word8 -> Bool
token :: Parser [Word8]
attribute :: Parser [Word8]
parameter :: Parser (ByteString, ByteString)
xTokenPred :: Word8 -> Bool
xToken :: Parser ByteString
value :: Parser [Word8]
mtype :: Parser ByteString
subtype :: Parser ByteString
extensionToken :: Parser ByteString
content :: Parser Header
encoding :: Parser Header
mechanism :: Parser ByteString
safeCharPred :: Word8 -> Bool
safeChar :: Parser Word8
hexOctet :: Parser Word8
transportPadding :: Parser [Word8]
ptext :: Parser Word8
qpSection :: Parser [Word8]
qpSegment :: Parser [Word8]
qpPart :: Parser [Word8]
qpLine :: Parser [Word8]
quotedPrintable :: Parser ByteString
contentId :: Parser Header
description :: Parser Header
mimeExtensionField :: Parser Header
colonsp :: Parser ()
semicolonsp :: Parser ()

-- | <ul>
--   <li>Temporary ADTs</li>
--   </ul>
data HeaderType
ContentH :: HeaderType
EncodingH :: HeaderType
IdH :: HeaderType
DescriptionH :: HeaderType
VersionH :: HeaderType
ExtensionH :: ByteString -> HeaderType
data Header
Header :: HeaderType -> ByteString -> Map ByteString ByteString -> Header
[hType] :: Header -> HeaderType
[hValue] :: Header -> ByteString
[hParams] :: Header -> Map ByteString ByteString
instance GHC.Show.Show Network.Parser.Rfc2045.Header
instance GHC.Classes.Eq Network.Parser.Rfc2045.Header
instance GHC.Classes.Ord Network.Parser.Rfc2045.HeaderType
instance GHC.Show.Show Network.Parser.Rfc2045.HeaderType
instance GHC.Classes.Eq Network.Parser.Rfc2045.HeaderType


-- | Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types
--   <a>http://www.ietf.org/rfc/rfc2046.txt</a>
module Network.Parser.Rfc2046
bcharsnospacePred :: Word8 -> Bool
bcharsnospace :: Parser Word8
bchars :: Parser ByteString Word8
boundary :: Parser ByteString [Word8]
dashBoundary :: Parser ByteString [Word8]
encapsulation :: Parser ByteString ([Header], [Word8])
delimiter :: Parser ByteString [Word8]
bodyPart :: Parser ByteString ([Header], [Word8])

module Network.Parser.Mime
decodelatin1 :: ByteString -> Text

-- | <ul>
--   <li>Utilities</li>
--   </ul>
string2mimetype :: ByteString -> MimeType
parseMimeHeaders :: Parser MimeValue

-- | <ul>
--   <li>Data Types</li>
--   </ul>
--   
--   recursive at MimeContent, holding mime values
data MimeValue
MimeValue :: Type -> Maybe Disposition -> MimeContent -> Map HeaderType Text -> Bool -> MimeValue
[mvType] :: MimeValue -> Type
[mvDisp] :: MimeValue -> Maybe Disposition
[mvContent] :: MimeValue -> MimeContent
[mvHeaders] :: MimeValue -> Map HeaderType Text
[mvIncType] :: MimeValue -> Bool
nullMimeValue :: MimeValue
data Type
Type :: MimeType -> Map Text Text -> Type
[mimeType] :: Type -> MimeType
[mimeParams] :: Type -> Map Text Text

-- | content-type default as defined in rfc 2045 "Content-type: text/plain;
--   charset=us-ascii"
nullType :: Type
type SubType = Text
type TextType = Text
data MimeType
Text :: TextType -> MimeType
Image :: SubType -> MimeType
Audio :: SubType -> MimeType
Video :: SubType -> MimeType
Application :: SubType -> MimeType
Message :: SubType -> MimeType
MultiPart :: Multipart -> MimeType
Other :: Text -> SubType -> MimeType
data Multipart
Alternative :: Multipart
Byteranges :: Multipart
Digest :: Multipart
Encrypted :: Multipart
FormData :: Multipart
Mixed :: Multipart
Parallel :: Multipart
Related :: Multipart
Signed :: Multipart
Extension :: Text -> Multipart
OtherMultiPart :: Text -> Multipart
type Content = ByteString
data MimeContent
Single :: Content -> MimeContent
Multi :: [MimeValue] -> MimeContent
data Disposition
Disposition :: DispType -> [DispParam] -> Disposition
[dispType] :: Disposition -> DispType
[dispParams] :: Disposition -> [DispParam]
data DispType
DispInline :: DispType
DispAttachment :: DispType
DispFormData :: DispType
DispOther :: Text -> DispType
data DispParam
Name :: Text -> DispParam
Filename :: Text -> DispParam
CreationDate :: Text -> DispParam
ModDate :: Text -> DispParam
ReadDate :: Text -> DispParam
Size :: Text -> DispParam
OtherParam :: Text -> Text -> DispParam
instance GHC.Show.Show Network.Parser.Mime.MimeContent
instance GHC.Classes.Eq Network.Parser.Mime.MimeContent
instance GHC.Show.Show Network.Parser.Mime.MimeValue
instance GHC.Classes.Eq Network.Parser.Mime.MimeValue
instance GHC.Show.Show Network.Parser.Mime.Disposition
instance GHC.Classes.Eq Network.Parser.Mime.Disposition
instance GHC.Show.Show Network.Parser.Mime.DispParam
instance GHC.Classes.Eq Network.Parser.Mime.DispParam
instance GHC.Show.Show Network.Parser.Mime.DispType
instance GHC.Classes.Eq Network.Parser.Mime.DispType
instance GHC.Show.Show Network.Parser.Mime.Type
instance GHC.Classes.Eq Network.Parser.Mime.Type
instance GHC.Show.Show Network.Parser.Mime.MimeType
instance GHC.Classes.Eq Network.Parser.Mime.MimeType
instance GHC.Show.Show Network.Parser.Mime.Multipart
instance GHC.Classes.Eq Network.Parser.Mime.Multipart

module Network.Types

-- | HTTP Methods
data Method
GET :: Method
HEAD :: Method
POST :: Method
PUT :: Method
DELETE :: Method
TRACE :: Method
OPTIONS :: Method
CONNECT :: Method
EXTENSIONMETHOD :: ByteString -> Method

-- | HTTP Version holds major and minor numbers.
data HttpVersion
HttpVersion :: Int -> Int -> HttpVersion
[httpMajor] :: HttpVersion -> Int
[httpMinor] :: HttpVersion -> Int

-- | HTTP 1.0
http10 :: HttpVersion

-- | HTTP 1.1
http11 :: HttpVersion

-- | HTTP Headers
data Header
GeneralHeader :: Header
RequestHeader :: Header
EntityHeader :: Header
data RequestUri

-- | like in OPTIONS * HTTP/1.1
Asterisk :: RequestUri

-- | commonly used in proxy servers
AbsoluteUri :: URI -> RequestUri

-- | like /asd.cgi
AbsolutePath :: ByteString -> RequestUri

-- | with a query part like /asd.cgi?foo=bar
RelativeRef :: URI -> RequestUri

-- | Just the authority part
Authority :: (Maybe URIAuth) -> RequestUri
data Request
Request :: Method -> RequestUri -> HttpVersion -> [(ByteString, ByteString)] -> ByteString -> Request

-- | Request Method
[rqMethod] :: Request -> Method

-- | Request URI
[rqUri] :: Request -> RequestUri

-- | HTTP Version as a tuple
[rqVersion] :: Request -> HttpVersion

-- | Request Headers as an alist
[rqHeaders] :: Request -> [(ByteString, ByteString)]

-- | Request Body
[rqBody] :: Request -> ByteString
data Response
Response :: Int -> [(ByteString, ByteString)] -> HttpVersion -> ByteString -> Response

-- | Response Code
[rpCode] :: Response -> Int

-- | Response Headers as an alist
[rpHeaders] :: Response -> [(ByteString, ByteString)]

-- | HTTP Version
[rpVersion] :: Response -> HttpVersion

-- | Response Message
[rpMessage] :: Response -> ByteString
data URI
URI :: String -> Maybe URIAuth -> String -> String -> String -> URI

-- | Ex: http or https
[uriScheme] :: URI -> String

-- | authority = [ userinfo "@" ] host [ ":" port ]
[uriAuthority] :: URI -> Maybe URIAuth

-- | Path is the part between the authority and the query
[uriPath] :: URI -> String

-- | Query begins with <tt>?</tt>
[uriQuery] :: URI -> String

-- | Fragment begins with <tt>#</tt>
[uriFragment] :: URI -> String
data URIAuth
URIAuth :: String -> String -> String -> URIAuth

-- | username:password
[uriUserInfo] :: URIAuth -> String

-- | registered name, ex: www.core.gen.tr
[uriRegName] :: URIAuth -> String

-- | Port as a string
[uriPort] :: URIAuth -> String

-- | HTTP error.
data HttpError
InvalidRequestError :: String -> HttpError
[httpErrorMessage] :: HttpError -> String
instance GHC.Classes.Eq Network.Types.HttpError
instance GHC.Show.Show Network.Types.Request
instance GHC.Classes.Eq Network.Types.Request
instance GHC.Show.Show Network.Types.RequestUri
instance GHC.Classes.Eq Network.Types.RequestUri
instance GHC.Show.Show Network.Types.URI
instance GHC.Classes.Eq Network.Types.URI
instance GHC.Show.Show Network.Types.URIAuth
instance GHC.Classes.Eq Network.Types.URIAuth
instance GHC.Show.Show Network.Types.Response
instance GHC.Classes.Eq Network.Types.Response
instance GHC.Show.Show Network.Types.Method
instance GHC.Classes.Eq Network.Types.Method
instance GHC.Show.Show Network.Types.HttpVersion
instance GHC.Classes.Eq Network.Types.HttpVersion
instance GHC.Exception.Exception Network.Types.HttpError
instance GHC.Show.Show Network.Types.HttpError


-- | Uniform Resource Identifier (URI): Generic Syntax
--   <a>http://www.ietf.org/rfc/rfc3986.txt</a> TODO: implement ipv6 and
--   ipvfuture
module Network.Parser.Rfc3986
isSubDelims :: Word8 -> Bool
subDelims :: Parser Word8
isGenDelims :: Word8 -> Bool
genDelims :: Parser Word8
isReserved :: Word8 -> Bool
reserved :: Parser Word8
unreserved :: Parser Word8
pctEncoded :: Parser Word8
uchar :: String -> Parser ByteString Word8
pchar :: Parser ByteString Word8
fragment :: Parser [Word8]
query :: Parser ByteString [Word8]
segment :: Parser [Word8]
segmentNz :: Parser [Word8]
segmentNzNc :: Parser [Word8]
slashSegment :: Parser [Word8]
pathRootless :: Parser ByteString [Word8]
pathNoscheme :: Parser ByteString [Word8]
pathAbsolute :: Parser ByteString [Word8]
pathAbempty :: Parser ByteString [Word8]
regName :: Parser ByteString [Word8]
decOctet :: Parser [Word8]
ipv4address :: Parser [Word8]
port :: Parser ByteString [Word8]
host :: Parser ByteString [Word8]
userinfo :: Parser ByteString [Word8]
authority :: Parser (Maybe URIAuth)
scheme :: Parser ByteString [Word8]
relativePart :: Parser ByteString (Maybe URIAuth, [Word8])
relativeRef :: Parser ByteString URI
hierPart :: Parser (Maybe URIAuth, [Word8])
absoluteUri :: Parser URI
uri :: Parser ByteString URI
uriReference :: Parser ByteString URI


-- | Hypertext Transfer Protocol -- HTTP/1.1
--   <a>http://www.ietf.org/rfc/rfc2616.txt</a>
module Network.Parser.Rfc2616

-- | <ul>
--   <li>Basic Parser Constructs for RFC 2616</li>
--   </ul>
separatorsPred :: Word8 -> Bool

-- | <ul>
--   <li>Basic Parser Constructs for RFC 2616</li>
--   </ul>
tokenPred :: Word8 -> Bool
token :: Parser [Word8]
separators :: Parser Word8
comment :: Parser [Word8]
httpVersion :: Parser HttpVersion
method :: Parser Method
requestUri :: Parser RequestUri
requestLine :: Parser (Method, RequestUri, HttpVersion)
headerContentNcPred :: Word8 -> Bool
headerContent :: Parser Word8
headerName :: Parser [Word8]
headerValue :: Parser [Word8]
header :: Parser (ByteString, ByteString)
entityBody :: Parser [Word8]
messageBody :: Parser [Word8]
request :: Parser Request
reasonPhraseText :: Parser Word8
reasonPhrase :: Parser [Word8]
statusLine :: Parser (HttpVersion, Int, [Word8])
response :: Parser Response
