changeset 37:6b5946843928

example/persona.html example/wsgibrowserid.py
author Jeff Hammel <jhammel@mozilla.com>
date Fri, 27 Dec 2013 13:58:22 -0800
parents afeb01315ab6
children 4dfffa966edd
files example/persona.html example/wsgibrowserid.py
diffstat 2 files changed, 63 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/example/persona.html
+++ b/example/persona.html
@@ -47,17 +47,17 @@ navigator.id.watch({
 
 var signinLink = document.getElementById('signin');
 if (signinLink) {
 signinLink.onclick = function() { navigator.id.request(); };
 }
 
 var signoutLink = document.getElementById('signout');
 if (signoutLink) {
-  signoutLink.onclick = function() { navigator.id.logout(); };
+signoutLink.onclick = function() { navigator.id.logout(); };
 }
 });
 </script>
 </head>
 
 <body>
 <h1>
 <a href="https://login.persona.org/">Mozilla persona</a>
new file mode 100755
--- /dev/null
+++ b/example/wsgibrowserid.py
@@ -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()