# HG changeset patch # User Jeff Hammel # Date 1388181502 28800 # Node ID 6b59468439285d6f887e31fad855816880395965 # Parent afeb01315ab68d1c6438e525dfc2189d3554cbbe example/persona.html example/wsgibrowserid.py diff -r afeb01315ab6 -r 6b5946843928 example/persona.html --- a/example/persona.html Fri Dec 27 13:49:48 2013 -0800 +++ b/example/persona.html Fri Dec 27 13:58:22 2013 -0800 @@ -52,7 +52,7 @@ var signoutLink = document.getElementById('signout'); if (signoutLink) { - signoutLink.onclick = function() { navigator.id.logout(); }; +signoutLink.onclick = function() { navigator.id.logout(); }; } }); diff -r afeb01315ab6 -r 6b5946843928 example/wsgibrowserid.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/example/wsgibrowserid.py Fri Dec 27 13:58:22 2013 -0800 @@ -0,0 +1,62 @@ +#!/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()