http-directory-0.1.6: 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

main = do
  mgr <- httpManager
  let url = "https://example.com/some/dir/"
  files <- httpDirectory mgr url
  mapM_ T.putStrLn files
  let file = url / T.unpack (head files)
  httpFileSize mgr file >>= print
  httpLastModified mgr file >>= print
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 it was just httpRawDirectory)

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

Like httpDirectory but uses own 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

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

Test if an file (url) exists

Since: 0.1.3

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.

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

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 own 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
HasHttpManager Manager 
Instance details

Defined in Network.HTTP.Client.Types

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

This / eats extra slashes.

"dir/" <> "subdir" = "dirsubdir"

Since: 0.1.6