http-directory-0.1.11: http directory listing library
Safe HaskellSafe-Inferred
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

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

Try to get the filesize and modification time together of an http file Unlike httpFileSizeTime', it combines the results into one Maybe.

Uses global Manager.

Raises an error if the http request fails.

Since: 0.1.11

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 #

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