Mercurial > hg > bitsyauth
view example/persona.py @ 38:4dfffa966edd
example/wsgibrowserid.py
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Fri, 27 Dec 2013 19:47:46 -0800 |
parents | afeb01315ab6 |
children |
line wrap: on
line source
#!/usr/bin/env python """ test Mozilla persona auth https://login.persona.org/about """ import browserid import optparse import os import sys from webob import Request, Response, exc from wsgiref import simple_server here = os.path.dirname(os.path.realpath(__file__)) page = os.path.join(here, 'persona.html') class PersonaTest(object): def __init__(self, page=page): self.page = page assert os.path.exists(self.page), "File '%s' not found" % self.page self.page = open(self.page, 'r').read() def __call__(self, environ, start_response): request = Request(environ) method = request.method if method == 'GET': content_type = 'text/html' body = self.page elif method == 'POST': content_type = 'text/plain' assertion = request.POST.get('assertion') print ("Assertion: %s" % assertion) body = '\n'.join(['%s: %s' % (key, environ[key]) for key in sorted(environ.keys())]) else: content_type = 'text/plain' body = 'Try GET or POST to do something interesting (How did you get here?)' start_response("200 OK", [('Content-Type', content_type), ('Content-Length', str(len(body)))]) return [body] def main(args=sys.argv[1:]): usage = '%prog [options]' parser = optparse.OptionParser(usage=usage, description=__doc__) parser.add_option('-p', '--port', dest='port', type='int', default=8123, help="port to serve on") options, args = parser.parse_args(args) app = PersonaTest() server = simple_server.make_server('127.0.0.1', options.port, app) print 'server on\nhttp://localhost:%d/' % options.port try: server.serve_forever() except KeyboardInterrupt: pass if __name__ == '__main__': main()