except KeyError: raise Http403({'#details': 'Key did not match file'}) @route('/cookie-set') def set_cookies(request, message='Hi!'): response = Response('Cookies set!') response.cookies.add_cookie('logged_in', 'true') # Insecure cookie setting response.cookies.add_unsigned_cookie('message', message) return response @route('/cookie-get') def get_cookies(request): logged_in = request.COOKIES.get_cookie('logged_in') message = request.COOKIES.get_unsigned_cookie('message') if logged_in: return message raise Http403({'#details': 'Go away!'}) @route('/cookie-del') def get_cookies(request): response = Response('Cookies deleted!') response.cookies.del_cookie('logged_in') response.cookies.del_cookie('message') return response if __name__ == '__main__': from pyroutes import utils route('/media')(utils.fileserver) utils.devserver(application)
from pyroutes.http.response import Response from pyroutes.template import TemplateRenderer import memcache import simplejson import urllib tr = TemplateRenderer() cache = memcache.Client(servers=['127.0.0.1:11211']) @route('/') def index(request): fml_endpoint = 'http://graph.facebook.com/search?q="so%20starving&type=post' fb_data = cache.get(fml_endpoint) if not fb_data: fb_response = urllib.urlopen(fml_endpoint).read() fb_data = simplejson.loads(fb_response)['data'] cache.set(fml_endpoint, fb_data) return Response(tr.render('base.xml', {'ul': [ {'li': { '#picture': {'img/src': 'https://graph.facebook.com/%s/picture' % post['from']['id']}, '#message': {'#msg': post['message'], '#author': post['from']['name']} } } for post in [p for p in fb_data if 'message' in p]] })) if __name__ == '__main__': from pyroutes.utils import devserver devserver(application)
@route('/') def index(request): fml_endpoint = 'http://graph.facebook.com/search?q="so%20starving&type=post' fb_data = cache.get(fml_endpoint) if not fb_data: fb_response = urllib.urlopen(fml_endpoint).read() fb_data = simplejson.loads(fb_response)['data'] cache.set(fml_endpoint, fb_data) return Response( tr.render( 'base.xml', { 'ul': [{ 'li': { '#picture': { 'img/src': 'https://graph.facebook.com/%s/picture' % post['from']['id'] }, '#message': { '#msg': post['message'], '#author': post['from']['name'] } } } for post in [p for p in fb_data if 'message' in p]] })) if __name__ == '__main__': from pyroutes.utils import devserver devserver(application)
""" XSPF, an XML based playlist format """ response = magic(request, key) if isinstance(response, Response): return response time.sleep(1) channel = request.GET['ch'] template_data = {'#url': response, '#title': channel} return Response( TemplateRenderer().render("templates/xspf.xml", template_data), headers=[('Content-type','application/xspf+xml'), ('Content-disposition', 'attachment;filename=tv.xspf')]) if __name__ == '__main__': # For when we are running tv.py from the shell port = 8001 address = '0.0.0.0' if sys.argv[1:]: try: address, port = sys.argv[1].rsplit(':', 1) port = int(port) except ValueError: sys.stderr.write( '''If you want to supply a listen address, it must be on the format IP:port Examples: ./tv.py :80 # Listen on all IPv4 addresses, on the HTTP port ./tv.py 127.0.0.1:8000 # Run on localhost, good for development ''') route('/media')(utils.fileserver) utils.devserver(application, address=address, port=port)
if 'new_node_data' in request.POST: nodes[node] = request.POST['new_node_data'] return Redirect('/show/%s' % node) template_data = { # XML-Template will remove the textarea node if None '#edit_contents': nodes.get(node) or '', '#edit_form/action': '/edit/%s' % node, } return Response(renderer.render("templates/edit.xml", template_data), status_code="404 Not Found") @route('/show') def show(request, node): node_contents = nodes.get(node) if node_contents is None: return Redirect("/edit/%s" % node) template_data = { '#view_contents': node_contents, '#edit_link/href': '/edit/%s' % node } return Response(renderer.render("templates/show.xml", template_data)) if __name__ == '__main__': route('/media')(utils.fileserver) utils.devserver(application)