Mercurial > hg > FileServer
changeset 20:1eb5e82605a5
* flush out README
* other minor fixes
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 29 Feb 2012 16:38:39 -0800 |
parents | c6e459be8534 |
children | 3ce9fe38f5e1 |
files | INSTALL.py README.txt fileserver/web.py setup.py |
diffstat | 4 files changed, 55 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/INSTALL.py Wed Feb 29 16:15:31 2012 -0800 +++ b/INSTALL.py Wed Feb 29 16:38:39 2012 -0800 @@ -55,7 +55,7 @@ # find the clone filename = REPO.rstrip('/') - filename = REPO.split('/')[-1] + filename = filename.split('/')[-1] clone = os.path.join(src, filename) assert os.path.exists(clone), "Clone directory not found in %s" % src
--- a/README.txt Wed Feb 29 16:15:31 2012 -0800 +++ b/README.txt Wed Feb 29 16:38:39 2012 -0800 @@ -3,9 +3,58 @@ 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. + +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. + +Other Projects +-------------- + +While I didn't find them suitable for my use, there are other +standalone static fileservers available for python: + + * `Cling <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 -
--- a/fileserver/web.py Wed Feb 29 16:15:31 2012 -0800 +++ b/fileserver/web.py Wed Feb 29 16:38:39 2012 -0800 @@ -14,7 +14,7 @@ from webob import Request, Response, exc from wsgiref.simple_server import make_server -__all__ = ['get_mimetype', 'file_response', 'FileApp', 'DirectoryServer'] +__all__ = ['get_mimetype', 'file_response', 'FileApp', 'DirectoryServer', 'main'] def get_mimetype(filename): type, encoding = mimetypes.guess_type(filename) @@ -22,6 +22,7 @@ return type or 'application/octet-stream' def file_response(filename): + """return a webob response object appropriate to a file name""" res = Response(content_type=get_mimetype(filename)) res.body = open(filename, 'rb').read() return res
--- a/setup.py Wed Feb 29 16:15:31 2012 -0800 +++ b/setup.py Wed Feb 29 16:38:39 2012 -0800 @@ -4,7 +4,7 @@ import os -version = "0.1" +version = "0.2" dependencies = ['webob'] # allow use of setuptools/distribute or distutils @@ -13,8 +13,7 @@ from setuptools import setup kw['entry_points'] = """ [console_scripts] - FileServer = FileServer.main:main - FileServer-template = FileServer.template:main + FileServer = FileServer.web:main """ kw['install_requires'] = dependencies except ImportError: