http-directory-0.1.10: http directory listing library
Safe HaskellNone
LanguageHaskell2010

Network.HTTP.Directory

Description

A library for listing "files" in an http "directory".

import Network.HTTP.Directory
import qualified Data.Text as T
import qualified Data.Text.IO as T

main = do
  let url = "https://example.com/some/dir/"
  files <- httpDirectory' url
  mapM_ T.putStrLn files
  let file = url +/+ T.unpack (head files)
  httpFileSize' file >>= print
  httpLastModified' file >>= print

The main methods use http-client and most of the primed ones http-conduit.

Synopsis

Documentation

httpDirectory :: Manager -> String -> IO [Text] Source #

List the files (hrefs) in an http directory

It filters out absolute urls & paths, queries, '..', and # links.

Raises an error if the http request fails.

Note if the directory (webpage) url is redirected to a different path you may need to use httpRedirect to determine the actual final url prefix for relative links (files).

(Before 0.1.4 this was the same as httpRawDirectory)

httpDirectory' :: String -> IO [Text] Source #

Like httpDirectory but uses the global Manager

Since: 0.1.4

httpRawDirectory :: Manager -> String -> IO [Text] Source #

List all the hrefs in an http directory html file.

Raises an error if the http request fails.

Note if the directory (webpage) url is redirected to a different path you may need to use httpRedirect to determine the actual final url prefix for relative links (files).

Since: 0.1.4

httpRawDirectory' :: String -> IO [Text] Source #

List all the hrefs in an http directory html file.

Raises an error if the http request fails.

Like httpRawDirectory but uses Network.HTTP.Simple (http-conduit)

Since: 0.1.9

httpExists :: Manager -> String -> IO Bool Source #

Test if an file (url) exists

Since: 0.1.3

httpExists' :: String -> IO Bool Source #

Test if an file (url) exists

Since: 0.1.9

httpFileSize :: Manager -> String -> IO (Maybe Integer) Source #

Try to get the filesize (Content-Length field) of an http file

Raises an error if the http request fails.

httpFileSize' :: String -> IO (Maybe Integer) Source #

Try to get the filesize (Content-Length field) of an http file

Raises an error if the http request fails.

Since: 0.1.9

httpLastModified :: Manager -> String -> IO (Maybe UTCTime) Source #

Try to get the modification time (Last-Modified field) of an http file

Raises an error if the http request fails.

Since: 0.1.1

httpLastModified' :: String -> IO (Maybe UTCTime) Source #

Try to get the modification time (Last-Modified field) of an http file

Raises an error if the http request fails. Uses global Manager

Since: 0.1.9

httpFileSizeTime :: Manager -> String -> IO (Maybe Integer, Maybe UTCTime) Source #

Try to get the filesize and modification time of an http file

Raises an error if the http request fails.

Since: 0.1.10

httpFileSizeTime' :: String -> IO (Maybe Integer, Maybe UTCTime) Source #

Try to get the filesize and modification time of an http file Global Manager version.

Raises an error if the http request fails.

Since: 0.1.10

httpFileHeaders :: Manager -> String -> IO ResponseHeaders Source #

Return the HTTP headers for a file

Raises an error if the http request fails.

Since: 0.1.10

httpFileHeaders' :: String -> IO ResponseHeaders Source #

Return the HTTP headers of an http file. Global Manager version.

Raises an error if the http request fails.

Since: 0.1.10

httpManager :: IO Manager Source #

Alias for 'newManager tlsManagerSettings' so one does not need to import http-client etc

Since: 0.1.2

httpRedirect :: Manager -> String -> IO (Maybe ByteString) Source #

Return final redirect for an url

httpRedirect' :: String -> IO (Maybe ByteString) Source #

Like httpRedirect but uses global Manager.

Since: 0.1.4

httpRedirects :: Manager -> String -> IO [ByteString] Source #

Returns the list of http redirects for an url in reverse order (ie last redirect is listed first)

isHttpUrl :: String -> Bool Source #

Test if string starts with http[s]:

Since: 0.1.5

trailingSlash :: String -> String Source #

Make sure an url ends with "/"

trailingSlash "url" == "url/"
trailingSlash "url/" == "url/"

Since: 0.1.6

noTrailingSlash :: Text -> Text Source #

Remove all trailing slashes from filename or url

noTrailingSlash "dir/" == "dir"
noTrailingSlash "dir//" == "dir"

Since: 0.1.6

data Manager #

Keeps track of open connections for keep-alive.

If possible, you should share a single Manager between multiple threads and requests.

Since 0.1.0

Instances

Instances details
HasHttpManager Manager 
Instance details

Defined in Network.HTTP.Client.Types

(+/+) :: String -> String -> String infixr 5 Source #

This +/+ eats extra slashes.

"dir//" +/+ "/subdir/" = "dir/subdir/"

Since: 0.1.9