download-0.3.2: High-level file download based on URLs

MaintainerDon Stewart <>




A binding to libdownload, an efficient, high level library for retrieving files using Uniform Resource Locators (URLs). This provides simple, uniform access to file, FTP and HTTP resources. Content may be retrieved as a strings, ByteString or parsed as HTML tags, XML or RSS and Atom feeds.

Error handling is encapsulated in the Either type.


The basic interface to network content

openURI :: String -> IO (Either String ByteString)Source

Download content specified by url (in RFC1738 form), using either FTP, HTTP or file protocols, returning the content as a strict ByteString.

If the url is malformed, a Left value is returned. Similarly, if an error occurs, Left is returned, with a protocol-specific error string.

If the file protocol is used, documents will be retrieved from the local filesystem. If the ftp scheme is used, the FTP protocol (RFC959) is used. If no user name or passoword are provided, anonymous login, with user name anonymous and password anonymous will be attempted.

If the http method is used, HTTP/1.1 will be used.


 openURI ""

openURIString :: String -> IO (Either String String)Source

Like openURI, but returns the result as a String


 openURIString ""

Parsers for common formats

openAsTags :: String -> IO (Either String [Tag String])Source

Download the content as for openURI, but return it as a list of parsed tags using the tagsoup html parser.

openAsXML :: String -> IO (Either String [Content])Source

Download the content as for openURI, but return it as parsed XML, using the xml-light parser.

openAsFeed :: String -> IO (Either String Feed)Source

Download the content as for openURI, but return it as parsed RSS or Atom content, using the feed library parser.