pony.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. # (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org)
  2. # Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
  3. """
  4. We have a pony and/or a unicorn.
  5. """
  6. from paste.request import construct_url
  7. PONY = """
  8. eJyFkkFuxCAMRfdzCisbJxK2D5D2JpbMrlI3XXQZDt9PCG0ySgcWIMT79rcN0XClUJlZRB9jVmci
  9. FmV19khjgRFl0RzrKmqzvY8lRUWFlXvCrD7UbAQR/17NUvGhypAF9og16vWtkC8DzUayS6pN3/dR
  10. ki0OnpzKjUBFpmlC7zVFRNL1rwoq6PWXXQSnIm9WoTzlM2//ke21o5g/l1ckRhiPbkDZXsKIR7l1
  11. 36hF9uMhnRiVjI8UgYjlsIKCrXXpcA9iX5y7zMmtG0fUpW61Ssttipf6cp3WARfkMVoYFryi2a+w
  12. o/2dhW0OXfcMTnmh53oR9egzPs+qkpY9IKxdUVRP5wHO7UDAuI6moA2N+/z4vtc2k8B+AIBimVU=
  13. """
  14. UNICORN = """
  15. eJyVVD1vhDAM3e9XeAtIxB5P6qlDx0OMXVBzSpZOHdsxP762E0JAnMgZ8Zn37OePAPC60eV1Dl5b
  16. SS7fB6DmQNGhtegpNlPIQS8HmkYGdSqNqDF9wcMYus4TuBYGsZwIPqXfEoNir5K+R3mbzhlR4JMW
  17. eGpikPpn9wHl2sDgEH1270guZwzKDRf3nTztMvfI5r3fJqEmNxdCyISBcWjNgjPG8Egg2hgT3mJi
  18. KBwNvmPB1hbWJ3TwBfMlqdTzxNyDE2H8zOD5HA4KkqJGPVY/TwnxmPA82kdSJNj7zs+R0d1pB+JO
  19. xn2DKgsdxAfFS2pfTSD0Fb6Uzv7dCQSvE5JmZQEQ90vNjBU1GPuGQpCPS8cGo+dQgjIKqxnJTXbw
  20. ucFzPFVIJXtzk6BXKGPnYsKzvFmGx7A0j6Zqvlvk5rETXbMWTGWj0RFc8QNPYVfhJfMMniCPazWJ
  21. lGtPZecIGJWW6oL2hpbWRZEkChe8eg5Wb7xx/MBZBFjxeZPEss+mRQ3Uhc8WQv684seSRO7i3nb4
  22. 7HlKUg8sraz47LmXyh8S0somADvoUpoHjGWl+rUkF0H+EIf/gbyyMg58BBk6L634/fkHUCodMw==
  23. """
  24. class PonyMiddleware(object):
  25. def __init__(self, application):
  26. self.application = application
  27. def __call__(self, environ, start_response):
  28. path_info = environ.get('PATH_INFO', '')
  29. if path_info == '/pony':
  30. url = construct_url(environ, with_query_string=False)
  31. if 'horn' in environ.get('QUERY_STRING', ''):
  32. data = UNICORN
  33. link = 'remove horn!'
  34. else:
  35. data = PONY
  36. url += '?horn'
  37. link = 'add horn!'
  38. msg = data.decode('base64').decode('zlib')
  39. msg = '<pre>%s\n<a href="%s">%s</a></pre>' % (
  40. msg, url, link)
  41. start_response('200 OK', [('content-type', 'text/html')])
  42. return [msg]
  43. else:
  44. return self.application(environ, start_response)
  45. def make_pony(app, global_conf):
  46. """
  47. Adds pony power to any application, at /pony
  48. """
  49. return PonyMiddleware(app)