view README.txt @ 27:41bd126ab77d

note test status
author Jeff Hammel <jhammel@mozilla.com>
date Mon, 05 Mar 2012 13:23:05 -0800
parents 3ce9fe38f5e1
children aca8cb6bfd63
line wrap: on
line source

FileServer
===========

a simple static fileserver and directory index server in python (WSGI app)

About
-----

Often for testing you will want a static fileserver and directory
index as part of your WSGI stack.  In addition, you may have
requirements to run such as part of a production WSGI
stack. FileServer fits these needs.

Motivation
----------

I needed a directory index server a la Apache to test a PyPI clone I
was using.  After surveying what was out there, there didn't seem
anything out there that was easily consumable for my purposes.  So I
wrote one only depending on
`webob <http://www.webob.org/>`_ .

Contents
--------

``from fileserver import *`` should give you access to all of the
usable components of fileserver:

 * ``file_response``: return a webob response object appropriate to a
   file name
 * ``FileApp``: WSGI app that wraps ``file_response``
 * ``Directory Server``: serves a directory tree and generated indices
 * ``main``: command line entry point

``FileApp`` and ``file_response`` are heavily borrowed from
http://docs.webob.org/en/latest/file-example.html though the example
there is more complete.  I will work on making this more thorough
going forward.  I also borrowed from Paste's ``StaticURLParser`` and
``static.Cling``.

In addition there is a command line script, ``serve``, which may be
used to serve a directory with the
`wsgiref <http://docs.python.org/library/wsgiref.html>`_ server.

Tests
-----

doctests and a test runner, ``test.py``, exist in the ``tests/``
subdirectory of http://k0s.org/hg/FileServer . I currently use
``paste.fixture.TestApp`` to mock requests and inspect responses, but
should probably move to
`WebTest <http://webtest.pythonpaste.org/en/latest/index.html>`_ .

Other Projects
--------------

While I didn't find them suitable for my use, there are other
standalone static fileservers available for python:

 * `static <http://lukearno.com/projects/static/>`_

 * `Paste <http://pythonpaste.org/modules/urlparser.html>`_ ``StaticURLParser``

 * `SimpleHTTPServer <http://docs.python.org/library/simplehttpserver.html>`_

----

Jeff Hammel

http://k0s.org/hg/FileServer