wai-app-static-3.1.8: WAI application for static serving
Safe HaskellSafe-Inferred
LanguageHaskell2010

WaiAppStatic.Types

Synopsis

Pieces

data Piece Source #

An individual component of a path, or of a filepath.

This is the core type used by wai-app-static for doing lookups. It provides a smart constructor to avoid the possibility of constructing unsafe path segments (though unsafeToPiece can get around that as necessary).

Individual file lookup backends must know how to convert from a Piece to their storage system.

Instances

Instances details
Show Piece Source # 
Instance details

Defined in WaiAppStatic.Types

Methods

showsPrec :: Int -> Piece -> ShowS #

show :: Piece -> String #

showList :: [Piece] -> ShowS #

Eq Piece Source # 
Instance details

Defined in WaiAppStatic.Types

Methods

(==) :: Piece -> Piece -> Bool #

(/=) :: Piece -> Piece -> Bool #

Ord Piece Source # 
Instance details

Defined in WaiAppStatic.Types

Methods

compare :: Piece -> Piece -> Ordering #

(<) :: Piece -> Piece -> Bool #

(<=) :: Piece -> Piece -> Bool #

(>) :: Piece -> Piece -> Bool #

(>=) :: Piece -> Piece -> Bool #

max :: Piece -> Piece -> Piece #

min :: Piece -> Piece -> Piece #

toPiece :: Text -> Maybe Piece Source #

Smart constructor for a Piece. Won't allow unsafe components, such as pieces beginning with a period or containing a slash. This will, however, allow null pieces.

unsafeToPiece :: Text -> Piece Source #

Construct a Piece without input validation.

type Pieces = [Piece] Source #

Request coming from a user. Corresponds to pathInfo.

The root path is the empty list.

toPieces :: [Text] -> Maybe Pieces Source #

Call toPiece on a list.

toPieces = mapM toPiece

Caching

data MaxAge Source #

Values for the max-age component of the cache-control response header.

Constructors

NoMaxAge

no cache-control set

MaxAgeSeconds Int

set to the given number of seconds

MaxAgeForever

essentially infinite caching; in reality, probably one year

NoStore

set cache-control to no-store @since 3.1.8

File/folder serving

type FolderName = Piece Source #

Just the name of a folder.

data Folder Source #

Represent contents of a single folder, which can be itself either a file or a folder.

Constructors

Folder 

data File Source #

Information on an individual file.

Constructors

File 

Fields

data LookupResult Source #

Result of looking up a file in some storage backend.

The lookup is either a file or folder, or does not exist.

type Listing = Pieces -> Folder -> IO Builder Source #

How to construct a directory listing page for the given request path and the resulting folder.

Settings

data StaticSettings Source #

All of the settings available to users for tweaking wai-app-static.

Note that you should use the settings type approach for modifying values. See http://www.yesodweb.com/book/settings-types for more information.

Constructors

StaticSettings 

Fields

  • ssLookupFile :: Pieces -> IO LookupResult

    Lookup a single file or folder. This is how you can control storage backend (filesystem, embedded, etc) and where to lookup.

  • ssGetMimeType :: File -> IO MimeType

    Determine the mime type of the given file. Note that this function lives in IO in case you want to perform more complicated mimetype analysis, such as via the file utility.

  • ssIndices :: [Piece]

    Ordered list of filenames to be used for indices. If the user requests a folder, and a file with the given name is found in that folder, that file is served. This supercedes any directory listing.

  • ssListing :: Maybe Listing

    How to perform a directory listing. Optional. Will be used when the user requested a folder.

  • ssMaxAge :: MaxAge

    Value to provide for max age in the cache-control.

  • ssMkRedirect :: Pieces -> ByteString -> ByteString

    Given a requested path and a new destination, construct a string that will go there. Default implementation will use relative paths.

  • ssRedirectToIndex :: Bool

    If True, send a redirect to the user when a folder is requested and an index page should be displayed. When False, display the content immediately.

  • ssUseHash :: Bool

    Prefer usage of etag caching to last-modified caching.

  • ssAddTrailingSlash :: Bool

    Force a trailing slash at the end of directories

  • ss404Handler :: Maybe Application

    Optional Application to be used in case of 404 errors

    Since 3.1.3