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 8 PONY = """ 9 eJyFkkFuxCAMRfdzCisbJxK2D5D2JpbMrlI3XXQZDt9PCG0ySgcWIMT79rcN0XClUJlZRB9jVmci 10 FmV19khjgRFl0RzrKmqzvY8lRUWFlXvCrD7UbAQR/17NUvGhypAF9og16vWtkC8DzUayS6pN3/dR 11 ki0OnpzKjUBFpmlC7zVFRNL1rwoq6PWXXQSnIm9WoTzlM2//ke21o5g/l1ckRhiPbkDZXsKIR7l1 12 36hF9uMhnRiVjI8UgYjlsIKCrXXpcA9iX5y7zMmtG0fUpW61Ssttipf6cp3WARfkMVoYFryi2a+w 13 o/2dhW0OXfcMTnmh53oR9egzPs+qkpY9IKxdUVRP5wHO7UDAuI6moA2N+/z4vtc2k8B+AIBimVU= 14 """ 15 16 UNICORN = """ 17 eJyVVD1vhDAM3e9XeAtIxB5P6qlDx0OMXVBzSpZOHdsxP762E0JAnMgZ8Zn37OePAPC60eV1Dl5b 18 SS7fB6DmQNGhtegpNlPIQS8HmkYGdSqNqDF9wcMYus4TuBYGsZwIPqXfEoNir5K+R3mbzhlR4JMW 19 eGpikPpn9wHl2sDgEH1270guZwzKDRf3nTztMvfI5r3fJqEmNxdCyISBcWjNgjPG8Egg2hgT3mJi 20 KBwNvmPB1hbWJ3TwBfMlqdTzxNyDE2H8zOD5HA4KkqJGPVY/TwnxmPA82kdSJNj7zs+R0d1pB+JO 21 xn2DKgsdxAfFS2pfTSD0Fb6Uzv7dCQSvE5JmZQEQ90vNjBU1GPuGQpCPS8cGo+dQgjIKqxnJTXbw 22 ucFzPFVIJXtzk6BXKGPnYsKzvFmGx7A0j6Zqvlvk5rETXbMWTGWj0RFc8QNPYVfhJfMMniCPazWJ 23 lGtPZecIGJWW6oL2hpbWRZEkChe8eg5Wb7xx/MBZBFjxeZPEss+mRQ3Uhc8WQv684seSRO7i3nb4 24 7HlKUg8sraz47LmXyh8S0somADvoUpoHjGWl+rUkF0H+EIf/gbyyMg58BBk6L634/fkHUCodMw== 25 """ 26 27 28 class PonyMiddleware(object): 29 30 def __init__(self, application): 31 self.application = application 32 33 def __call__(self, environ, start_response): 34 path_info = environ.get('PATH_INFO', '') 35 if path_info == '/pony': 36 url = construct_url(environ, with_query_string=False) 37 if 'horn' in environ.get('QUERY_STRING', ''): 38 data = UNICORN 39 link = 'remove horn!' 40 else: 41 data = PONY 42 url += '?horn' 43 link = 'add horn!' 44 msg = data.decode('base64').decode('zlib') 45 msg = '<pre>%s\n<a href="%s">%s</a></pre>' % ( 46 msg, url, link) 47 start_response('200 OK', [('content-type', 'text/html')]) 48 return [msg] 49 else: 50 return self.application(environ, start_response) 51 52 def make_pony(app, global_conf): 53 """ 54 Adds pony power to any application, at /pony 55 """ 56 return PonyMiddleware(app) 57 58