test_server.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env python
  2. import webob
  3. def app(environ, start_response):
  4. request = webob.Request(environ)
  5. if request.path == '/redirect':
  6. start_response("301 MOVED", [("Location", "/foo")])
  7. return "301 MOVED"
  8. elif request.path == '/needs_auth':
  9. auth = request.headers.get('Authorization')
  10. if auth and auth.startswith("Basic"):
  11. user,passwd = auth.split()[-1].decode("base64").split(":")
  12. else:
  13. user = None
  14. if user != 'john':
  15. start_response("401 Unauthorized", [('WWW-Authenticate', "Basic realm=\"default\"")])
  16. return "401 Unauthorized"
  17. start_response("200 OK", [("Content-Type", "text/plain")])
  18. retval = ["Path: %s" % request.path]
  19. keys = request.params.keys()
  20. keys.sort()
  21. for k in keys:
  22. v = request.params[k]
  23. if hasattr(v, 'file'):
  24. v = v.file.read()
  25. retval.append("%s: %s" % (k, v))
  26. return "\n".join(retval)
  27. if __name__ == '__main__':
  28. import sys
  29. from paste.httpserver import serve
  30. port = int(sys.argv[1])
  31. if len(sys.argv) == 3 and sys.argv[2] == "ssl":
  32. ssl_pem = "*"
  33. else:
  34. ssl_pem = None
  35. try:
  36. serve(app, "localhost", port, ssl_pem=ssl_pem)
  37. except KeyboardInterrupt:
  38. pass