download- High-level file download based on URLs

Copyright(c) Don Stewart
MaintainerDon Stewart <>
Safe HaskellNone




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 password 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.