# `paste.fileapp` – Serve files

This module handles sending static content such as in-memory data or files. At this time it has cache helpers and understands the if-modified-since request header.

## Module Contents

class paste.fileapp.FileApp(filename, headers=None, **kwargs)

  Returns an application that will send the file at the given filename. Adds a mime type based on `mimetypes.guess_type()`. See DataApp for the arguments beyond `filename`.

class paste.fileapp.DirectoryApp(path)

  Returns an application that dispatches requests to corresponding FileApps based on PATH_INFO. FileApp instances are cached. This app makes sure not to serve any files that are not in a subdirectory. To customize FileApp creation override `DirectoryApp.make_fileapp`

paste.fileapp.DataApp(content, headers=None, allowed_methods=None, **kwargs)

  Returns an application that will send content in a single chunk, this application has support for setting cache-control and for responding to conditional (or HEAD) requests.

  Constructor Arguments:

  > `content` the content being sent to the client

  > `headers` the headers to send /w the response

  > The remaining `kwargs` correspond to headers, where the underscore is replaced with a dash. These values are only added to the headers if they are not already provided; thus, they can be used for default values. Examples include, but are not limited to:

  > > `content_type` `content_encoding` `content_location`

  `cache_control()`

  > This method provides validated construction of the `Cache-Control` header as well as providing for automated filling out of the `EXPIRES` header for HTTP/1.0 clients.

  `set_content()`

  > This method provides a mechanism to set the content after the application has been constructed. This method does things like changing `Last-Modified` and `Content-Length` headers.

paste.fileapp.ArchiveStore(filepath)

  Returns an application that serves up a DataApp for items requested in a given zip or tar archive.

  Constructor Arguments:

  > `filepath` the path to the archive being served

  `cache_control()`

  > This method provides validated construction of the `Cache-Control` header as well as providing for automated filling out of the `EXPIRES` header for HTTP/1.0 clients.